在ECMAScript5的Array中已经有了Array.prototype.forEach,Array.prototype.filter,Array.prototype.map等方法
1. map
var ary = Array(3);
ary[0] = 2
ary.map(function(elem) { return '1'; });
结果是["1", undefined * 2]
, 因为map
只能被初始化过的数组成员调用
2. reduce
[].reduce(Math.pow); //typeError, 空数组上调用reduce
var a = [1, 2, 3].reduce(function(previous, current, index, a) {
return previous + current;
});
//a=6 a = [1, 2, 3].reduce(function(previous, current, index, a) {
return previews + current;
}, 2);
//a=8
当满足下列任一条件时,将引发 TypeError 异常:
callbackfn 参数不是函数对象。
数组不包含元素,且未提供 initialValue。
回调函数的返回值在下一次调用回调函数时作为 previousValue 参数提供。 最后一次调用回调函数获得的返回值为 reduce 方法的返回值。
不为数组中缺少的元素调用该回调函数。