4 回答
TA贡献1803条经验 获得超3个赞
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' ]
TA贡献1827条经验 获得超4个赞
除了剪接之外,您还可以使用这种方法,它不会对原始数组进行变异,而是使用添加的项创建一个新数组。你通常应该尽可能避免突变。我在这里用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]
添加回答
举报