效率方面经过我的测试,for高于另外两个方法。总体排序:
for > forEach > map
效率测试代码:
var arr = [],
max = 1000;
for (var i = 1; arr.push(i++) < max;);
var mapArr = [],forEachArr = [],forArr = [];
console.time('map');
arr.map(function (val) {
mapArr.push(val);
})
console.timeEnd('map');
console.time('forEach');
arr.forEach(function (val) {
forEachArr.push(val);
})
console.timeEnd('forEach');
console.time('for');
for (var i = 0; i < arr.length; i++) {
forArr.push(arr[i]);
}
console.timeEnd('for');
执行了四次,结果分别为:
forEach是ES5中操作数组的一种方法,主要功能是遍历数组,例如:
var arr = [1,2,3,4];
arr.forEach(alert);
等价于:
var arr = [1, 2, 3, 4];
for (var k = 0, length = arr.length; k < length; k++) {
alert(array[k]);
}
forEach方法中的function回调有三个参数:第一个参数是遍历的数组内容,第二个参数是对应的数组索引,第三个参数是数组本身
[].forEach(function(value,index,array){
//code something
});
等价于:
$.each([],function(index,value,array){
//code something
})
写一个例子;
var arr = [1,2,3,4];
arr.forEach(function(value,index,array){
array[index] == value; //结果为true
sum+=value;
});
console.log(sum); //结果为 10