【问题标题】:Difference between map, filter vs for and forEach and what would be the advantages of using map and filter over For and forEach loops?map、filter 与 for 和 forEach 之间的区别以及使用 map 和 filter 优于 For 和 forEach 循环的优势是什么?
【发布时间】:2019-03-29 15:47:54
【问题描述】:

我浏览了地图和过滤器功能,并了解到与 for 和 foreach 相比存在某种差异和优势。

优点:

  1. 不用写太多代码,理解很清晰

  2. 与迭代相比性能更好

map和filter如何表现更好?

感谢任何形式的建议。

【问题讨论】:

  • 您在哪里看到地图和过滤器提供更好的性能?这篇文章说的不同:hackernoon.com/…
  • forloop使用索引,foreach使用key和value进行遍历。而 mapreduce 使用更复杂的节点(mapper 和 reducer),具有 Sorting Searching Indexing 和 TF-IDF 的优势。

标签: javascript angular typescript ecmascript-6


【解决方案1】:

map 和 filter 的性能并不总是比 for 循环好。
这篇文章非常详细地解释了一切map vs for loop

从头到尾阅读它,您会完全了解每种方法的区别、优点和缺点。

【讨论】:

    【解决方案2】:

    使用mapforEach 没有优缺点。他们有自己的目的

    这两种方法的主要区别在于forEach 允许您更改原始数组的元素并返回undefinedmap 不允许您更改原始数组并且旨在基于原始数组创建新数组.

    例如,如果您需要从用户数组中获取用户 ID 数组,则应使用 map;如果您需要从数组的每个项目中获取 console.log,则最好使用 forEach

    由于javascript 是更实用的语言,它最好使用来自Array.prototype非变异 函数,例如filtermapfind 等。它使我能够使代码更具可读性和可维护性。我可以像 tat one 一样写结构

    arr.map(num => num * 2).filter(num => num > 5);
    

    您可以在这里了解更多信息https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype

    附:对于我的项目中的每个forEachmap 的用法有 20 个或更多,我避免使用可变方法。

    【讨论】:

      【解决方案3】:

      其他答案实际上解释了原因。这是一个简单的基准标记示例。使用该链接运行测试。

      http://jsben.ch/cz0Cg

      在链接过期时发布结果。

      JS 循环

      var foo1 = ['spray', 'limit', 'elite', 'exuberant', 'destruction','present'];
      for(var i=0;i<foo1.length;i++){
          console.log(foo1[i]);
      }
      

      执行时间:677 ms

      JS 地图

      var foo2 = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
      foo2.map((v,i)=>console.log(v));
      

      执行时间:686 ms

      JS 过滤器

      var foo3 = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
      const result = foo3.filter(word => word.length > 6);
      
      console.log(result);
      

      执行时间:259 ms

      给出的执行时间是我测试的时间,可能会发生变化。

      【讨论】:

      • 感谢您的快速回复@krishnadas,您是说性能比地图更好,对吧?
      • 这是一个判断电话。不同的数据可以有不同的表现。
      • 当我处理大量数据时,使用 for 或 foreach 或 map 会更好一些。如果地图更好,那么地图中使用什么类型的功能来提高性能,因为我没有得到任何明确的解释。 @克里希纳达斯
      • 这是示例数据的示例,在这种情况下 for 循环比 map 运行得更好。您可以对实际数据进行相同的尝试以查看差异。此外,如果您在 unix 环境中,则可以使用 time 命令来查找各个脚本的时间。 computerhope.com/unix/utime.htm。我的目的是测量给定输入的性能并查看结果。对于实际数据,您需要像这样找出对您来说运行得更快的数据。
      【解决方案4】:

      关于 for、for each、map 和 filters 的性能和差异的清晰说明 freeCodeCamp

      【讨论】:

      • 关于您提到的上述内容的信息看起来不错且清晰。它消除了混乱。谢谢好友
      猜你喜欢
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 2015-11-18
      • 2017-01-05
      • 1970-01-01
      • 2016-03-29
      相关资源
      最近更新 更多