javascript - 如何使用标准函数获取元素的 indexOf
问题描述
我想indexOf
通过使用标准函数来获取数组中的对象。
尝试1:有效,但效率低下,因为我必须迭代数组两次。
尝试2:不起作用(显然),但表明我想要实现的目标。
const dataSet = [{ name: "obj1" }, { name: "obj2" }, { name: "obj3" }, { name: "obj4" }, { name: "obj5" }]
const attempt1 = dataSet.indexOf(dataSet.find(d => d.name === 'obj3'))
const attempt2 = dataSet.indexOf(d => d.name === 'obj3')
console.log(attempt1)
console.log(attempt2)
解决方案
您可能正在寻找findIndex
const dataSet = [{ name: "obj1" }, { name: "obj2" }, { name: "obj3" }, { name: "obj4" }, { name: "obj5" }]
const attempt2 = dataSet.findIndex(d => d.name === 'obj3')
console.log(attempt2)
为什么第二个不工作而第一次尝试工作?
indexOf
期望搜索一个 searchElement 值,因此在您使用的第一次尝试find
中indexOf
返回一个值,而在第二次尝试中您传递了一个不indexOf
期望的函数
推荐阅读
- android - Flutter UI 第一屏坏了
- spring-boot - Spring Boot部署成功后调用服务方法
- php - 是否可以从 PHP 中的十六进制/二进制(原始数据)值生成音频文件?
- javascript - 如何使用nodejs中的readline查找文件中代码的条件?
- python - 如何通过 python 客户端获取 kubernetes 中 pod 的日志和描述
- blockchain - 如何解码 SHA256 哈希值并在 Solidity 中检索数据
- angular - 如何使用 Angular 7 更新 firebase relatime 数据库中的属性键
- mysql - 为什么使用 mysqldump 导入数据后写入的块大小固定?
- javascript - 如果数组中不存在值,我该如何处理对象数组,它必须推送到该数组,如果确实存在,则不能推送它
- ffmpeg - 我想创建视频流媒体网站,但我想硬分的问题