Javascript 中映射、过滤和查找的最佳实践 — 提升数组控制能力考虑数组中的数千条记录,因此在 Javascript 中执行映射、过滤和查找函数之后
var folks = [
{name: "Nill", age: "20", occupation: "delinquent"},
{name: "John", age: "3", occupation: "delinquent"},
{name: "Bob", age: "32", occupation: "developer"},
{name: "Bill", age: "17", occupation: "delinquent"},
{name: "Bob", age: "40", occupation: "yes"}
]
var i;
const b1=folks.map( fella => {
if(fella.name == "Bob"){
i= fella
}
})
console.log(i)
const a=folks.find( fella => fella.name === "Bob")
console.log(a)
const b=folks.filter( fella => fella.name === "Bob")
console.log(b)
最简单的答案是
find()
。
原因如下:
想象一下你正在玩捉迷藏。地图会检查每个藏身点,即使它立即找到你要找的人。过滤器也会遍历每一个可能的地方,确保没有一个人掉队。但找到是最快的。一旦找到人,它就会停止寻找。因此,如果您只需要第一个匹配项,请使用 find。它不会浪费时间,而且很快就能得到结果。
但实际上,“哪个更快?”的问题如果没有上下文,确实有些毫无意义。这些方法的效率根据您想要实现的具体目标而有所不同:是快速查找单个项目、收集与条件匹配的所有项目还是转换数据。
了解这些方法中的每一种都有不同的目的,并且选择正确的方法取决于您场景的具体要求:
find
旨在定位数组中的第一个匹配项,并在找到匹配项后停止。对于只需要第一个匹配元素的场景,此特性通常会使速度更快。filter
用于获取符合给定条件的所有元素的数组。如果您的目标是收集所有匹配项,filter
是合适的选择,尽管当只需要一项时,它可能比 find
慢。map
用于转换;它将函数应用于数组中的每个元素并返回结果数组。它不适合搜索或查找目的,并且与查找项目的比较不太相关。