繁星点点滴滴
您可以实现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' ]
GCT1015
除了剪接之外,您还可以使用这种方法,它不会对原始数组进行变异,而是使用添加的项创建一个新数组。你通常应该尽可能避免突变。我在这里用ES6传真机。const items = [1, 2, 3, 4, 5]const insert = (arr, index, newItem) => [ // part of the array before the specified index ...arr.slice(0, index), // inserted item newItem, // part of the array after the specified index ...arr.slice(index)]const result = insert(items, 1, 10)console.log(result)// [1, 10, 2, 3, 4, 5]这可以通过稍微调整函数以使用REST运算符来添加多个项,并在返回的结果中进行扩展。const items = [1, 2, 3, 4, 5]const insert = (arr, index, ...newItems) => [ // part of the array before the specified index ...arr.slice(0, index), // inserted items ...newItems, // part of the array after the specified index ...arr.slice(index)]const result = insert(items, 1, 10, 20)console.log(result)// [1, 10, 20, 2, 3, 4, 5]