如何将项目插入到特定索引处的数组中?

我正在寻找一种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.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方法

1.有多重论据和链接支持

/* 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"]

2.使用数组类型参数合并和链接支持

/* 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/

链接地址: http://www.djcxy.com/p/765.html

上一篇: How to insert an item into an array at a specific index?

下一篇: down list (select box) using jQuery