相同:forEach和map方法里每次执行匿名函数都支持3个参数,参数分别是item-当前项,index当前项索引值,array原数组;
不同:
map
1.map方法返回一个新的数组,数组中的元素为原始数组调用函数处理后的值。
2.map方法不会对空数组进行检测,若arr为空数组,则map方法返回的也是一个空数组,map方法不会改变原始数组。
3.浏览器支持:chrome、Safari1.5+、opera都支持,IE9+
let arr = [1, 2, 3, 4, 5];
let arr2 = arr.map(value => value ** value).filter(value => value > 1);
console.log('arr=', arr);
console.log('arr2=', arr2);
运行结果
arr= [ 1, 2, 3, 4, 5 ]
arr2= [ 4, 27, 256, 3125 ]
forEach
1.forEach方法用来调用数组的每个元素,将元素传给回调函数
2.forEach对于空数组是不会调用回调函数的,即没有返回值。
var arr = [1, 2, 3, 4, 5];
var sum = 0;
var str = arr.forEach(function(item, index, arr) {
sum += item;
console.log("sum=", sum);
}, this)
console.log("str=", str);
console.log("sum=", sum);
运行结果
sum= 1
sum= 3
sum= 6
sum= 10
sum= 15
str= undefined
sum= 15
性能上来说for>forEach>map
图片.png
但是选用方法时不用太过考虑性能,一般简单遍历用forEach,对会产生有规律的变化的新数组时用map
网友评论