我正在尝试在数组中创建对象集,如果该项目尚不存在,则创建一个新集。
数据结构就像
[
{
"order": orderData,
"items": itemData
}, {
"order": orderData,
"items": itemData
}
]
但是,当尝试动态创建新的数组索引并将其推入时,出现以下错误:
无法设置未定义的属性“项目”
在这种情况下,setNo = 2
,但是this.cart[2]
尚未实例化。
this.cart[setNo]['items'].push(items);
如何初始化该索引,以便可以将其即时推送?
答案 0 :(得分:1)
您可以检查cart[setNo]
是否不存在,并设置其具有items
属性的对象
if(!this.cart[setNo]) cart[setNo] = {items:[]};
this.cart[setNo]['items'].push(items)
答案 1 :(得分:1)
可能您需要先检查:
if (!this.cart[setNo]) {
this.cart[setNo] = {order: {}, items: []};
}
this.cart[setNo]['items'].push(item);
答案 2 :(得分:0)
您还可以使用ternary operator进行检查和添加:
let arr = [
{ "order": {}, "items": [] },
{ "order": {}, "items": [] }
], setNo = 2
arr[setNo]
? arr[setNo]['items'].push(1)
: (arr[setNo] = { order: {}, items: [] })['items'].push(1)
console.log(arr)