[英]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.