forEach是ECMA5 中Array方法中最基本的一個(gè)遍歷數(shù)組的方法
[1,2,3,4].forEach(alert);
//等同于下面這個(gè)for循環(huán)
var arr = [1,2,3,4];
for(var i = 0; i < arr.length; i++){
alert(arr[i]);
}
Array在ES5新增的方法中瞒御,參數(shù)都是function類型,默認(rèn)有傳參神郊。forEach方法中的function回調(diào)支持3個(gè)參數(shù):
- 第1個(gè)是遍歷的數(shù)組內(nèi)容肴裙;
- 第2個(gè)是對應(yīng)的數(shù)組索引;
- 第3個(gè)是數(shù)組本身
[].forEach(function(value , index , arr){
//...
});
$.each()是 jquery 中遍歷數(shù)組的方法。與forEach方法相比涌乳,回調(diào)函數(shù)中第1個(gè)和第2個(gè)參數(shù)正好是相反的
$.each()方法中的回調(diào)函數(shù)中支持的3個(gè)參數(shù)為:
- 第1個(gè)是遍歷的數(shù)組索引蜻懦;
- 第2個(gè)是對應(yīng)的數(shù)組內(nèi)容;
- 第3個(gè)是數(shù)組本身
$.each(arr , function(index, value, arr){
//...
});
map是指"映射"的意思裙椭,就是原數(shù)組被"映射"成對應(yīng)的新數(shù)組弄跌,*不會(huì)改變原數(shù)組的值。[].map(); 基本用法跟forEach方法類似:
array.map(callback, [ thisObject]);
callback的參數(shù)也類似:
[].map( function(value, index, arr){
//...
});
下面這個(gè)例子是數(shù)值項(xiàng)求平方:
var data = [1,3,4];
var Squares = data.map(function(val,index,arr){
console.log(arr[index] == val); // ==> true
return val*val;
})
console.log(Squares); // ==> [1, 9, 16]
console.log(Squares); // ==>[1,3,4]
注意:由于forEach峭沦、map都是ECMA5新增數(shù)組的方法蒸辆,所以ie9以下的瀏覽器還不支持(萬惡的IE罢髁丁),不過呢躬贡,可以從Array原型擴(kuò)展可以實(shí)現(xiàn)以上全部功能谆奥,例如forEach方法:
if (typeof Array.prototype.forEach != "function") {
Array.prototype.forEach = function() {
/* 實(shí)現(xiàn) */
};
}