繁体   English   中英

JavaScript:同时从数组中删除三个项目。 如何跟踪所有已删除的项目?

[英]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" )。 它们被一一移除。 并且在此过程中,代码通过pushunshift函数将代码排列在被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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM