javascript - [0] 在过滤器方法的末尾传递了什么?
问题描述
我在做 udemy 课程时得到了这个代码,但没有正确得到它。在过滤器方法末尾传递的 [0] 有什么作用,它的用途是什么?
let getUser = this.globalRoom.filter((userId) => {
return userId.id === id;
})[0]
解决方案
作为filter
返回一个仅包含通过回调检查的项目的数组,[0]
为您提供此类列表中的第一项。
然而,这是一个反模式,因为这里工作的正确工具是find,原因如下:
filter
不断循环整个数组,即使你只对它的第一个结果感兴趣find
准确返回第一个结果,并停止循环数组,无需访问其第一个索引
因此,这是做完全相同的事情的更好方法:
let getUser = this.globalRoom.find((userId) => {
return userId.id === id;
});
并且您应该检查它是否getUser
返回一个值,因为 asfilter
可能是一个空数组,因此访问它的索引0
将返回未定义,如果没有满足条件匹配一次,find
也会返回。undefined
推荐阅读
- angular - Angular 11 三元表达式 *ngIF
- wordpress - 获取 CPT 页面的顶级父类别名称和 URL
- flutter - 如何通过http包上传多张图片到mysql flutter
- swift - Swift 5 中的 QR 扫描仪
- c++ - OpenCV4 BOW + SIFT - 步骤和语法
- python - ImportError:无法从部分初始化的模块“sqlalchemy”导入名称“util”(很可能是由于循环导入)
- docker - 找不到包 buildah
- java - 同步与原子参考
- java - 项目中缺少 Gradle
- python-2.7 - GIMP script-fu,“file-glob”可以只返回具有特定扩展名的文件吗?