2 回答

TA貢獻2036條經(jīng)驗 獲得超8個贊
我認為問題可能出在您的 for 循環(huán)中,它會針對多個項目執(zhí)行。例如 -
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 })
}
}
對于第一個產(chǎn)品,它將設(shè)置 found 等于 true,對于第二次迭代,它將進入 else 并將 found 設(shè)置為 false。我想也許正因為如此,你得到了一個重復(fù)的產(chǎn)品。代替 for 循環(huán)來檢查元素是否存在,您可以使用數(shù)組的 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條經(jīng)驗 獲得超9個贊
我不熟悉反應(yīng),但通常像這樣的一行:for (let x in products)
,將帶回 x 的產(chǎn)品,而不是索引。您將 x 視為索引。這是問題的一部分嗎?
添加回答
舉報