forEach:
语法:
array.forEach(function(currentValue, index, arr), thisValue)
其中:index可选;arr可选;thisValue可选
map
var new_array = arr.map(callback[, thisArg])
callback 同样三个参数currentValue, index, arr;
map:和forEach非常相似,都是用来遍历数组中的每一项;
区别:map的回调函数中支持return返回值;return的是啥,相当于把数组中的这一项变为啥(并不影响原来的数组,只是相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了);
forEach不支持return
var arr = [1, 2, 3];
console.log(
arr.map(function(i){
return i+i;
})
//链式风格
.sort()
);// [2,4,6]
console.log(
arr.forEach(function(i){
return i+i;
})
//接不起来,断了
.sort()
);//TypeError: Cannot read property 'sort' of undefined
不管是forEach还是map 都支持第二个参数值,第二个参数的意思是把匿名回调函数中的this进行修改。
map 和 foreach的总结
1、map速度比foreach快
2、map会返回一个新数组,不对原数组产生影响,foreach不会产生新数组,
3、map因为返回数组所以可以链式操作,foreach不能
["1", "2", "3"].map(parseInt); //结果 [1, NaN, NaN]
原因:
parseInt接收俩参数parseInt(string, radix);
map 最多传递 3 个参数 (element, index, array)」
["1", "2", "3"].map(parseInt)等价于:
[parseInt('1',0),parseInt('2',1),parseInt('3',2)]
parseInt要点:
parseInt方法还可以接受第二个参数(2到36之间),
默认情况下,parseInt的第二个参数为10,
如果第二个参数是0、undefined和null,则直接忽略。
网友评论