我有一个类似数组的对象:
[1:Array[10], 2: Array[2], 3: Array[2], 4: Array[2], 5: Array[3], 6: Array[1]]
我试图删除前两个元素,做一些事情,然后再将它们插入同一个地方。
这就是我的所作所为:
array = Array.prototype.splice.call(array, 0,2);
在Firefox中记录array
时会显示:
Array [ <2 empty slots>, Array[1], Array[2], Array[3], Array[1] ]
对我来说很好,我删除了前两个元素,现在数组以2个空插槽开头。
所以现在,我希望做的是在这两个空插槽中添加对象。
为简单起见,我们从数组中删除项目,然后在同一个地方再次插入:
var twoFirstItems = Array.prototype.slice.call(array, 0,2);
array = Array.prototype.splice.call(array, 0,2);
现在,重新插入twoFirstItems
我认为我可以这样做:
array.unshift(twoFirstItems)
这不能按预期工作,它会插入数组,但它没有像修改前那样的key
。我认为这与unshift
与array-like object
的{{1}}不同,与array
的工作方式不同。
那么如何正确删除/插入元素到array-like-object
?
如果我执行以下操作:
console.log(array);
console.log(typeof array);
结果:
Array [ <1 empty slot>, Array[2], Array[2], Array[2], Array[3], Array[1] ]
object
答案 0 :(得分:1)
没有任何复杂情况,您只需re-assign
该索引处的已修改数组。
var a = [
[1, 2, 3, 4, 5, 6],
[1, 2, 3, 4, 5, 6],
[1, 2, 3, 4, 5, 6],
[1, 2, 3, 4, 5, 6]
]
a[0] = a[0].map((el) => el * 10)
a[1] = a[1].map((el) => el * 20)
console.log(a)