我已经了解了地图和过滤器的功能,并且了解到for和foreach之间存在某种差异和优势。
优势:
无需编写过多的代码,也无需非常清楚的理解
与迭代相比,性能更好
地图和过滤器将如何具有更好的性能?
赞赏任何建议。
答案 0 :(得分:2)
关于地图和过滤器各自的性能和差异的清晰说明 freeCodeCamp
答案 1 :(得分:1)
map和filter的性能并不总是比for循环好。
本文详细介绍了所有内容,map vs for loop
从头到尾阅读它,您将完全了解它们的区别,优点和缺点。
答案 2 :(得分:0)
使用map
或forEach
没有利弊。他们有自己的目的。
这两种方法之间的主要区别是forEach
允许您更改原始数组的元素并返回undefined
,而map
不允许您更改原始数组并用于基于原始阵列的新阵列。
例如,如果需要从用户数组中获取用户ID数组,则应使用map
,如果需要从数组的每个项目中获取console.log
,则最好使用{{1} }。
由于forEach
是一种更具功能性的语言,因此最好使用javascript
中的 non-muting 函数,例如Array.prototype
,filter
,{{ 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)
其他答案实际上解释了原因。这是一个简单的基准标记示例。使用链接来运行测试。
在链接过期的情况下发布结果。
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);
给出的执行时间是我测试时的时间,可能会有所变化。