我似乎无法使array.findIndex工作,并且我确定要搜索的数组中应该有一个匹配项,但findIndex始终返回-1。
let index = state.bag.findIndex((it) => {
it.id === item.id
console.log(it.id,it.id===item.id,item.id);
})
console.log(index);
我得到以下控制台日志:
00SEEB0BASU900XS false 00SEEB0BASU900S index.js:48
00SEEB0BASU900S true 00SEEB0BASU900S index.js:48
00SEEB0BASU900M false 00SEEB0BASU900S index.js:48
00SEEB0BASU900L false 00SEEB0BASU900S index.js:48
00SEEB0BASU900XL false 00SEEB0BASU900S index.js:48
00SEEB0BASU900XXL false 00SEEB0BASU900S index.js:48
-1 index.js:50
如您所见,它找到了真实值,因此应该返回对象数组的索引。
我真的很沮丧,感谢您的帮助。
编辑:
添加RETURN确实可行,尽管仅出于我的学习目的,在findIndex的MDN示例中,没有RETURN。
const fruits = ["apple", "banana", "cantaloupe", "blueberries", "grapefruit"];
const index = fruits.findIndex(fruit => fruit === "blueberries");
console.log(index); // 3
console.log(fruits[index]); // blueberries
答案 0 :(得分:0)
因为您忘记了返回回调中的条件
let index = state.bag.findIndex((it) => {
return it.id === item.id
//console.log(it.id,it.id===item.id,item.id);
})
答案 1 :(得分:0)
let index = state.bag.findIndex((it) => {
return it.id === item.id
console.log(it.id,it.id===item.id,item.id);
})
console.log(index);