原生JS forEach()和map()遍歷,jQuery$.each()和$.map()遍歷
阿新 • • 發佈:2018-01-13
each ole this asc fin name param view map()
一、原生JS forEach()和map()遍歷
共同點:
1.都是循環遍歷數組中的每一項。
2.forEach() 和 map() 裏面每一次執行匿名函數都支持3個參數:數組中的當前項item,當前項的索引index,原始數組input。
3.匿名函數中的this都是指Window。
4.只能遍歷數組。
1.forEach()
沒有返回值,修改的是原數組。
var ary = [12,23,24,42,1];
var res = ary.forEach(function (item,index,input) {
input[index] = item*10;
})
console.log(res);//-->undefined;
console.log(ary);//-->[ 120, 230, 240, 420, 10 ];
2.map()
有返回值,可以return 出來。不修改原數組。
var ary = [12,23,24,42,1];
var res = ary.map(function (item,index,input) {
return item*10;
})
console.log(res);//-->[120,230,240,420,10];
console.log(ary);//-->[12,23,24,42,1];
二、jQuery .each()和.map()遍歷
共同點:
即可遍歷數組,又可遍歷對象。
1.$.each()
沒有返回值。$.each()裏面的匿名函數支持2個參數:當前項的索引i,數組中的當前項n。如果遍歷的是對象,k 是鍵,n 是值。
$.each( ["a","b","c"], function(i, n){
console.log( i + ": " + n );
});
// 0: a
// 1: b
// 2: c
$.each( { name: "John", lang: "JS" }, function(k, n){
console.log( "Name: " + k + ", Value: " + n );
});
//Name: name, Value: John
// Name: lang, Value: JS
2.$.map()
有返回值,可以return 出來。.map()裏面的匿名函數支持2個參數和 .each()裏的參數位置相反:數組中的當前項n,當前項的索引i。如果遍歷的是對象,i 是值,n 是鍵。如果是("span").map()形式,參數順序和.each() ,$(“span”).each()一樣。
var arr=$.map( [0,1,2], function(n,i){
return n+i;
});
console.log(arr);
//[ 0, 2, 4 ]
$.map({"name":"Jim","age":17},function(n,i){
console.log(n+":"+i);
});
//Jim:name
//17:age
原生JS forEach()和map()遍歷,jQuery$.each()和$.map()遍歷