从对象数组为对象的道具增加价值

时间:2019-04-17 03:15:54

标签: javascript arrays reactjs

我想推送对象数组的新状态,该对象的属性之一应具有先前对象属性的值。

我已经尝试过此代码(如下),但是它说 “ TypeError:无法读取未定义的属性'country_id'”

state ={

countryControls: [{

id: null,

country_id: '',
description: '',
city_id: '',
}]
}

addControls () {
var countryControls = this.state.countryControls;
countryControls.push({
id: null,
country_id:countryControls.length > 0 ? 
countryControls[ countryControls.length - 2 ].country_id : '',
description: '',
city_id: '',
});

this.setState({ countryControls: countryControls});
}

我希望它的输出如下: 数组中的第一个对象

  

country_id值= 5(由用户手动输入)

数组中的第二个对象

  

country_id值= 5(用户最后输入的自动值)

1 个答案:

答案 0 :(得分:0)

当数组长度为1时,countryControls[ countryControls.length - 2 ]将为undefined。您只能减去1

addControls () {
   var countryControls = this.state.countryControls;
   countryControls.push({
      id: null,
      country_id:countryControls.length > 0 ? 
      countryControls[ countryControls.length - 1 ].country_id : '',
      description: '',
      city_id: '',
});

this.setState({ countryControls: countryControls});
}