2 回答
TA贡献2036条经验 获得超8个赞
我认为问题可能出在您的 for 循环中,它会针对多个项目执行。例如 -
let products = [{ id: "id", price: "price", qty: 1 },{ id: "id2", price: "price2", qty: 12 }]
for (let x in products) {
if (products[x].id === data.id) {
this.setState({ found: true })
} else {
this.setState({ found: false })
}
}
对于第一个产品,它将设置 found 等于 true,对于第二次迭代,它将进入 else 并将 found 设置为 false。我想也许正因为如此,你得到了一个重复的产品。代替 for 循环来检查元素是否存在,您可以使用数组的 findIndex 方法 -
let index = products.findIndex((element)=> element.id === data.id)
if(index !== -1)
{
this.setState({ found: true })
}else{
this.setState({ found: false })
}
findindex 的参考 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex
TA贡献2016条经验 获得超9个赞
我不熟悉反应,但通常像这样的一行:for (let x in products)
,将带回 x 的产品,而不是索引。您将 x 视为索引。这是问题的一部分吗?
添加回答
举报