0

我正在尝试在数组中创建对象集,如果该项目尚不存在,则创建一个新集。

数据结构就像

[
  {
    "order": orderData,
    "items": itemData
  }, {
    "order": orderData,
    "items": itemData
  }
]

但是,当尝试动态创建一个新的数组索引并推送到它时,我收到以下错误:

无法设置未定义的属性“项目”

在这种情况下,setNo = 2, 但this.cart[2]尚未实例化。

this.cart[setNo]['items'].push(items);

如何初始化此索引以便可以即时推送它?

4

3 回答 3

1

您可以检查是否cart[setNo]不存在将其设置为具有items属性 的对象

if(!this.cart[setNo]) cart[setNo] = {items:[]};
this.cart[setNo]['items'].push(items)
于 2019-06-21T16:46:02.637 回答
1

可能,您需要先检查:

if (!this.cart[setNo]) {
   this.cart[setNo] = {order: {}, items: []};
} 
this.cart[setNo]['items'].push(item);
于 2019-06-21T16:46:25.630 回答
0

您也可以使用三元运算符来检查和添加:

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)

于 2019-06-21T18:12:37.010 回答