map,filter和for和forEach之间的区别以及与for和forEach循环相比,使用map和filter的优点是什么?

时间:2018-10-25 06:06:36

标签: javascript angular typescript ecmascript-6

我已经了解了地图和过滤器的功能,并且了解到for和foreach之间存在某种差异和优势。

优势:

  1. 无需编写过多的代码,也无需非常清楚的理解

  2. 与迭代相比,性能更好

地图和过滤器将如何具有更好的性能?

赞赏任何建议。

4 个答案:

答案 0 :(得分:2)

关于地图和过滤器各自的性能和差异的清晰说明 freeCodeCamp

答案 1 :(得分:1)

map和filter的性能并不总是比for循环好。
本文详细介绍了所有内容,map vs for loop

从头到尾阅读它,您将完全了解它们的区别,优点和缺点。

答案 2 :(得分:0)

使用mapforEach没有利弊。他们有自己的目的

这两种方法之间的主要区别是forEach允许您更改原始数组的元素并返回undefined,而map不允许您更改原始数组并用于基于原始阵列的新阵列。

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

由于forEach是一种更具功能性的语言,因此最好使用javascript中的 non-muting 函数,例如Array.prototypefilter,{{ 1}}等。它使我可以使代码更具可读性和可维护性。我可以像tat一样写

map

您可以在这里https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype

了解更多信息

P.S。对于我项目中的每个find,有20种或更多的arr.map(num => num * 2).filter(num => num > 5); 用法,我避免使用可变方法。

答案 3 :(得分:0)

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

http://jsben.ch/cz0Cg

在链接过期的情况下发布结果。

JS For循环

Service1.method1())

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

JS地图

677 ms

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

JS过滤器

686 ms

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

  

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