Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何向可能不存在的对象添加字段?_Javascript - Fatal编程技术网

Javascript 如何向可能不存在的对象添加字段?

Javascript 如何向可能不存在的对象添加字段?,javascript,Javascript,我有一个this.\u champ对象(默认情况下未定义) 我浏览了一个数组,并希望使用以下值添加此字段:this.\u champ[champ.name][ele.infos[0].StackableRangeName]=ele.value但是在第一次迭代时,[champ.name]是未定义的,而[ele.infos[0].StackableRangeName]总是未定义的,如何管理 我尝试了这个三元运算符,但它不起作用: this.champ[champ.name] != und

我有一个
this.\u champ
对象(默认情况下未定义)

我浏览了一个数组,并希望使用以下值添加此字段:
this.\u champ[champ.name][ele.infos[0].StackableRangeName]=ele.value
但是在第一次迭代时,[champ.name]是
未定义的
,而
[ele.infos[0].StackableRangeName]
总是
未定义的
,如何管理

我尝试了这个三元运算符,但它不起作用:

      this.champ[champ.name] != undefined ? this._champ[champ.name].push({ele.infos[0].StackableRangeName: ele.value}) : this._champ.push({champ.name: {ele.infos[0].StackableRangeName: ele.value}})

只需检查钥匙是否存在。然后推送值:

if(this.champ && !this.champ.hasOwnProperty(champ.name)) {
     this.champ[champ.name] = [];
}
this._champ[champ.name].push({ele.infos[0].StackableRangeName: ele.value});

只需检查钥匙是否存在。然后推送值:

if(this.champ && !this.champ.hasOwnProperty(champ.name)) {
     this.champ[champ.name] = [];
}
this._champ[champ.name].push({ele.infos[0].StackableRangeName: ele.value});

这是一种常用的习惯用法,用于在尚未设置默认值的情况下初始化某些内容:

this.champ[champ.name] = this.champ[champ.name] || []

这是一种常用的习惯用法,用于在尚未设置默认值的情况下初始化某些内容:

this.champ[champ.name] = this.champ[champ.name] || []

如果它不存在,你就不能添加任何内容。您或者需要确保它存在,然后向其中添加一些内容,或者将所需数据存储在其他位置,并在创建对象后进行设置。很遗憾,我们无法以其他方式管理它:(为什么会感到羞耻?在任何语言中,在推送元素之前,您都必须告诉自己对象是数组。这是常识。如果它不存在,您就不能向它添加任何内容。您要么需要确保它存在,然后向它添加一些内容,要么将需要的数据存储在其他地方,并在对象创建后进行设置。这是我们无法管理的羞耻换句话说:(为什么是羞耻?在任何语言中,你必须在推送元素之前告诉你的对象是数组。这是常识。谢谢你,这正是我想要的如果它解决了问题,你应该接受答案。谢谢你,这正是我想要的如果它解决了问题,你应该接受答案。