动态添加属性返回未定义

时间:2017-01-19 21:08:37

标签: javascript json

我正在阅读一些外部JSON数据,然后通过添加关于是否选中该项目的自定义属性来尝试修改它。外部数据中不存在isChecked属性。

我正在添加属性和值,如下所示:

this.props.information.options[optionId].isChecked = true;

问题是,当我稍后遍历options数组时,isChecked属性始终返回undefined

this.props.information.options.forEach((option, index) => {
  //Check if it should be checked
  var ministry = this.props.information.name;

  console.log(option); //outputs object with isChecked property (see screenshot)

  if (option.isChecked !== undefined) {
    isChecked = option.isChecked;
  }
  else {
    console.log(option["isChecked"]); //Always outputs undefined
  }
}

所以我真的很困惑。 Firefox将该属性显示为对象的一部分,但无论是否使用,都将其作为undefined返回。或[]符号。

有什么想法吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

您的情况不正确。您应该检查isChecked 是否定义。更好的是,检查它是否严格等于预期值。

var options = [{}, {}, {}];
options[0].isChecked = true;

options.forEach(function(option, index) {
  if (option.isChecked === true) {
    console.log('checked');
  } else {
    console.log('not checked');
  }
});

相关问题