我正在嘗試創建具有以下限制的物件陣列
obj {
name : name,
items : []
}
其中 items 應該是這樣的專案物件陣列
item {
itemName : itemName,
price : price
}
當我嘗試將第二個專案物件添加到陣列時,它會創建另一個外部物件
function catalogue(input) {
let catalogue = [];
for (let line of input) {
let [name, price] = line.split(" : ")
let catalogueLetter = name[0];
let obj = {
name: name[0],
items: []
}
if (!catalogue.includes(catalogueLetter)) {
catalogue.push(obj)
}
let innerObject = {
productName: name,
productPrice: price
}
obj.items.push(innerObject)
}
}
}
catalogue([
'Omlet : 5.4',
'Shirt : 15',
'Cake : 59',
'Carrot : 2'
])
我得到了這個:
[
{ name: 'C', items: [ [Object] ] },
{ name: 'C', items: [ [Object] ] },
{ name: 'O', items: [ [Object] ] },
{ name: 'S', items: [ [Object] ] }
]
我正在努力做到這一點:
[
{ name: 'C', items: [ [Object1, Object2] ] },
{ name: 'O', items: [ [Object] ] },
{ name: 'S', items: [ [Object] ] }
]
uj5u.com熱心網友回復:
嘗試這個:
if (!catalogue.some(cat => cat.name === catalogueLetter)) {
catalogue.push(obj)
}
而不是這個:
if (!catalogue.includes(catalogueLetter)) {
catalogue.push(obj)
}
!catalogue.includes(catalogueLetter)
總是true
,因為catalogue
是物件陣列而不是字串陣列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/504547.html
標籤:javascript 数组 目的 嵌套的