我正在寻找一个 Javascript 数组插入方法,风格为:
arr.insert(index, item)
最好是在 jQuery 中,但任何 Javascript 实现都会在这一点上完成。
你想要的是本机数组对象上的splice
功能。
arr.splice(index, 0, item);
将item
插入到指定索引的arr
中(首先删除0
项,也就是说,它只是一个插入)。
在这个例子中,我们将创建一个数组并将一个元素添加到索引 2 中:
var arr = [];
arr[0] = "Jani";
arr[1] = "Hege";
arr[2] = "Stale";
arr[3] = "Kai Jim";
arr[4] = "Borge";
console.log(arr.join());
arr.splice(2, 0, "Lene");
console.log(arr.join());
您可以通过执行以下Array.insert
来实现Array.insert
方法:
Array.prototype.insert = function ( index, item ) {
this.splice( index, 0, item );
};
然后你就可以使用它:
var arr = [ 'A', 'B', 'D', 'E' ];
arr.insert(2, 'C');
// => arr == [ 'A', 'B', 'C', 'D', 'E' ]
insert
方法/* Syntax:
array.insert(index, value1, value2, ..., valueN) */
Array.prototype.insert = function(index) {
this.splice.apply(this, [index, 0].concat(
Array.prototype.slice.call(arguments, 1)));
return this;
};
它可以插入多个元素(如本机splice
所做)并支持链接:
["a", "b", "c", "d"].insert(2, "X", "Y", "Z").slice(1, 6);
// ["b", "X", "Y", "Z", "c"]
/* Syntax:
array.insert(index, value1, value2, ..., valueN) */
Array.prototype.insert = function(index) {
index = Math.min(index, this.length);
arguments.length > 1
&& this.splice.apply(this, [index, 0].concat([].pop.call(arguments)))
&& this.insert.apply(this, arguments);
return this;
};
它可以将参数中的数组与给定数组合并,并且还支持链接:
["a", "b", "c", "d"].insert(2, "V", ["W", "X", "Y"], "Z").join("-");
// "a-b-V-W-X-Y-Z-c-d"
演示: http : //jsfiddle.net/UPphH/