簡體   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