Javascript内置高阶函数性能测试-针对map、filter、find

问题描述 投票:0回答:1

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)
   
javascript dictionary filter find iteration
1个回答
3
投票

最简单的答案是

find()

原因如下:

想象一下你正在玩捉迷藏。地图会检查每个藏身点,即使它立即找到你要找的人。过滤器也会遍历每一个可能的地方,确保没有一个人掉队。但找到是最快的。一旦找到人,它就会停止寻找。因此,如果您只需要第一个匹配项,请使用 find。它不会浪费时间,而且很快就能得到结果。

但实际上,“哪个更快?”的问题如果没有上下文,确实有些毫无意义。这些方法的效率根据您想要实现的具体目标而有所不同:是快速查找单个项目、收集与条件匹配的所有项目还是转换数据。

了解这些方法中的每一种都有不同的目的,并且选择正确的方法取决于您场景的具体要求:

  • find
    旨在定位数组中的第一个匹配项,并在找到匹配项后停止。对于只需要第一个匹配元素的场景,此特性通常会使速度更快。
  • 另一方面,
  • filter
    用于获取符合给定条件的所有元素的数组。如果您的目标是收集所有匹配项,
    filter
    是合适的选择,尽管当只需要一项时,它可能比
    find
    慢。
  • map
    用于转换;它将函数应用于数组中的每个元素并返回结果数组。它不适合搜索或查找目的,并且与查找项目的比较不太相关。
© www.soinside.com 2019 - 2024. All rights reserved.