[英]Javascript - Adding multiple keys with same value from FOR loop into empty object
我是 stackoverflow 的新手,所以如果這個問題得到了回答,我很抱歉,發現的只是導致了更多的混亂。 在這里呆了幾個小時。
我的問題是當我嘗試添加具有相同值的多個鍵時,我只得到最后一個鍵和值存儲在 object 中。我使用 if/else 語句來嘗試實現我的目標。 這是我的代碼。
var itemData = [{
category: 'fruit',
itemName: 'apple',
onSale: false
},
{
category: 'canned',
itemName: 'beans',
onSale: false
},
{
category: 'canned',
itemName: 'corn',
onSale: true
},
{
category: 'frozen',
itemName: 'pizza',
onSale: false
},
{
category: 'fruit',
itemName: 'melon',
onSale: true
},
{
category: 'canned',
itemName: 'soup',
onSale: false
},
];
let list = { }
for (let i = 0; i < items.length; i++) {
if (items[i].category === 'fruit' && items[i].onSale === false) {
Object.assign(list, {fruit : [`${items[i].itemName}`]})
}
else if (items[i].category === 'fruit' && items[i].onSale === true) {
list.fruit.push(`${items[i].itemName}${'($)'}`)
}
else if (items[i].category === 'canned' && items[i].onSale === false) {
Object.assign(list, {canned : [`${items[i].itemName}`,] })
list.canned.push(`${items[i].itemName}`)
}
}
console.log(list) 顯示
{
canned: ["soup", "soup"],
fruit: ["apple", "melon($)"]
}
但我期待
{
canned: ["beans", "soup"],
fruit: ["apple", "melon($)"]
}
任何幫助,將不勝感激。 謝謝你。
Object.assign(list, {canned: [`${items[i].itemName}`,] })
在最后一個 else if 語句中覆蓋在第二次循環迭代中canned
的現有列表。
最簡單的解決方案是在創建list
時在開頭添加cannes
let list = {cannes: []}
然后您可以完全刪除Object.assign
行。
對於fruit
,您應該做同樣的事情並將Object.assign
行替換為list.fruit.push()
如果您只想在找到滿足您條件的任何項目時創建cannes
,只需添加一個 if/else 語句來檢查cannes
是否存在。
if ( ! 'canned' in list )
Object.assign(list, {canned : [`${items[i].itemName}`,] })
else
list.canned.push(`${items[i].itemName}`)
var itemData = [{ category: 'fruit', itemName: 'apple', onSale: false }, { category: 'canned', itemName: 'beans', onSale: false }, { category: 'canned', itemName: 'corn', onSale: true }, { category: 'frozen', itemName: 'pizza', onSale: false }, { category: 'fruit', itemName: 'melon', onSale: true }, { category: 'canned', itemName: 'soup', onSale: false }, ]; let list = {}; let counter = 0; itemData.forEach(isOnSale); console.log(list); function isOnSale(item) { if (item['onSale'] === false && item['category'] === 'canned') { //Initially Creating array and then pushing items if (counter > 0) { list['canned'].push(item['itemName']) } else { list['canned'] = Array(item['itemName']) } counter++; } else if (item['category'] === 'fruit') { if (counter > 0) { (item['onSale'] === false)? list['fruit'].push(item['itemName']): list['fruit'].push(`${item['itemName'].concat('($)')}`); } else { list['fruit'] = (item['onSale'] === false)? Array(item['itemName']): Array (`${item['itemName'].concat('($)')}`); } } }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.