Reactjs-无法从数组中获取值,未定义
2019-03-10
519
我尝试比较两个状态数组的值,但当我查看
otherItems[i]
的值时,我得到的是
undefined
。需要澄清的是,
Items
是一个包含许多数据点的对象数组,这就是为什么我用
.name
来调用它,而
otherItems
只是一个名称数组。如果我只调用
this.state.otherItems
,那么我将获得完整的数组内容。
this.state = {
Items: [],
otherItems: [],
...
}
...
function = () => {
var total = this.state.total;
var i;
for(i = 0; i < this.state.Items.length; i++) {
console.log(this.state.otherItems[i]);
if(this.state.Items[i].name === this.state.otherItems[i]) {
total += parseFloat(this.state.Items[i].price)
}
}
this.setState({Total: total})
}
我希望发生的是比较两个数组中的项目,并且当且仅当
Items
中的项目
i
存在于
otherItems
中时,项目的价格才会添加到总和中。
1个回答
您正在使用循环变量
i
并使用它来索引两个数组,因此您只比较两个数组之间具有相同索引的元素,并且两个数组的长度可能不同。
您可以改用
includes
来检查
Items
中元素的
name
是否存在于
otherItems
数组中。
getTotal() {
this.setState(({ total = 0, Items, otherItems }) => {
Items.forEach(item => {
if (this.state.otherItems.includes(item.name)) {
total += parseFloat(item.price);
}
});
return { otherTotal: total };
});
}
Tholle
2019-03-10