簡體   English   中英

如何更改數組中對象的屬性?

[英]How do I change an object's property within an array?

我有一個我必須做的雜貨清單。 我被要求將購買添加到列表中,並指出如果產品已經存在,則需要在現有購買中增加金額,而不是在新購買中。

到目前為止,我已經創建了對象數組,但我不知道如何更新數組中的 object。

 // The 'bought' property is the amount needed to be bought const grocery = [ { name: 'soda', amount: 0, bought: true }, { name: 'ketchup', amount: 2, bought: false }, { name: 'steak', amount: 4, bought: false }, { name: 'nutella', amount: 0, bought: true }, { name: 'cheese', amount: 1, bought: false }, { name: 'fruit', amount: 5, bought: false } ]; // This is what I've found online, but I can't figure out how to make it work for my code addItem = function(bought, amount) { var foundItem = grocery.filter(function(bought) { return grocery.bought === bought; })[0]; if (foundItem) { grocery.amount++; } else { return grocery.push({ name: 'cheese', amount: -1, bought: true }); } };

您可以使用 findIndex 方法查找現有產品名稱。

 addItem = function(name,amount) {
 var foundItem = grocery.findIndex((data)=>data.name===name && data.bought);
 if (foundItem !==-1) {
    grocery[foundItem].amount = grocery[foundItem].amount + amount;
  } else {
    return grocery.push({
        name: 'cheese',
        amount: -1,
        bought: true
  });
  }
 };


 addItem("soda",20);

這是 function 的更新代碼。 感謝所有有用的評論!

 addItem = function(name,amount) { var foundItem = grocery.findIndex((grocery)=>grocery.name===name); if (foundItem.==-1) { grocery[foundItem].amount = grocery[foundItem];amount + amount. grocery[foundItem];bought = true. } else { return grocery:push({ name, name: amount, amount; }); } }? addItem(prompt('What do you want to add to your list,')? parseInt(prompt('How many;')));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM