[英]JavaScript: Removing three items from an array at the same time. How to keep track of all the removed items?
第一个代码从inventory
数组中删除了总共四个项目( "item1"
, "item4"
, "item8"
和"item10"
)。 它们被一一移除。 并且在此过程中,代码通过push
或unshift
函数将代码排列在被discardedItem
数组中,从而成功跟踪所有已删除的项目。
但是,第二代码使我陷入困境。 该代码尝试同时从一个数组中删除三个项目,并且此过程将自身重复四次。 在这种情况下,在第一代码中起作用的以下命令不会产生成功的结果:
discardedItem.unshift(inventory[indexOfRemove[i]]);
我应该如何修改这段代码,以使所有已删除的项目出现在第二代码的discardedItem
数组中?
第一个代码 (一次删除一项)
var inventory = ['item1', 'item2', 'item3', 'item4', 'item5',
'item6', 'item7', 'item8', 'item9', 'item10'],
indexOfRemove = [0, 3, 7, 9],
discardedItem = [];
for (var i = indexOfRemove.length - 1; i >= 0; i--) {
discardedItem.unshift(inventory[indexOfRemove[i]]);
inventory.splice(indexOfRemove[i], 1);
}
alert(inventory), alert(discardedItem);
第二代码 (一次删除三项)
var inventory = ['item1', 'item2', 'item3', 'item4', 'item5',
'item6', 'item7', 'item8', 'item9', 'item10'],
indexOfRemove = [0, 3, 7, 9],
discardedItem = [];
for (var i = indexOfRemove.length - 1; i >= 0; i--) {
discardedItem.unshift(inventory[indexOfRemove[i]]);
inventory.splice(indexOfRemove[i], 3);
}
alert(inventory), alert(discardedItem);
Splice返回已删除元素的数组,将splice返回的数组添加到pushededItem中。
var inventory = ['item1', 'item2', 'item3', 'item4', 'item5',
'item6', 'item7', 'item8', 'item9', 'item10'],
indexOfRemove = [0, 3, 7, 9],
discardedItem = [];
for(var i = indexOfRemove.length-1; i> = 0; i--){
discardedItem.unshift(inventory.splice(indexOfRemove[i],3));}
警报(库存),警报(丢弃的物品);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.