Vuex 和 array.findIndex:找不到匹配项

Posted

技术标签:

【中文标题】Vuex 和 array.findIndex:找不到匹配项【英文标题】:Vuex and array.findIndex: cannot find a match 【发布时间】:2020-08-17 15:27:43 【问题描述】:

我似乎无法使 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

【问题讨论】:

【参考方案1】:

因为你忘记返回回调中的条件

Array#findIndex

let index = state.bag.findIndex((it) => 
    return it.id === item.id
    //console.log(it.id,it.id===item.id,item.id);
  )

【讨论】:

*facepalm 这就是为什么应该对您自己的代码进行同行评审。有时答案是显而易见的,但你看不到它。谢谢@prasanth。【参考方案2】:

let index = state.bag.findIndex((it) => 
    return it.id === item.id
    console.log(it.id,it.id===item.id,item.id);
  )
  console.log(index);
这些 ecma 6 方法需要返回,否则将无法生效

【讨论】:

以上是关于Vuex 和 array.findIndex:找不到匹配项的主要内容,如果未能解决你的问题,请参考以下文章

IndexOf谓词?

关于VC6.0的找不到头文件的问题

vc++编程找不到头文件。。。急求解决方法。。

查找数组中某个值的索引

执行持续集成时找不到头文件

CMake找不到头文件