如何推送到尚不存在的数组索引

时间:2019-06-21 16:39:06

标签: javascript arrays

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

数据结构就像

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

但是,当尝试动态创建新的数组索引并将其推入时,出现以下错误:

  

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

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

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

如何初始化该索引,以便可以将其即时推送?

3 个答案:

答案 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)