map遍历,js和jQuery的比较
先定义一个数组,和伪数组
//定义一个数组
var arr = [1, 3, 5, 7, 9];
//定义一个伪数组(对象)
var obj = {0:2, 1:4, 2:6, 3:8, 4:10, length:5};
利用原生js的map方法来遍历数组
/*
* 第一个参数:当前遍历到的元素(value)
* 第二个参数:当前遍历到的索引(index)
* 第三个参数:当前被遍历到的数组(array)
* */
arr.map(
function(value,index,array){
console.log(index,value,array)
}
);
运行结果log:成功
利用原生js的map方法来遍历伪数组
第三个参数:当前被遍历到的数组:obj
arr.map(
function(value,index,obj){
console.log(index,value,array)
}
);
运行结果:失败
利用原生jQuery的map方法来遍历数组 arr
/*第一个参数:要遍历的数组名称 arr
第二个参数:没遍历一个函数之后执行的回调函数 function
回调函数的参数:
第一个参数:遍历到的元素 value
第二个参数:遍历到的索引
*/
$.map(arr,function(value,index){
console.log(index,value);
})
执行结果:成功
利用原生jQuery的map方法来遍历伪数组 obj
//第一个参数:要遍历的数组名称 obj
$.map(obj,function(value,index){
console.log(index,value);
})
运行结果:成功
注:
和jQuery中的each静态方法一样,map静态方法也可以遍历伪数组
each和map 的区别1:
each静态方法的默认返回值是,遍历谁就返回谁
map静态方法的默认返回值是,一个空数组
我们var一个res变量来接收遍历结果并输出到控制台
//each
var res = $.each(obj,function(index,value)
{
//console.log(index, value);
});
console.log(res);
each运行结果
//map
var res2 = $.map(obj,function(value,index){
// console.log(index,value);
})
console.log(res2);
map运行结果
each和map 的区别2:
注:
map 的静态方法可以在回调函数中通过return,对遍历的数组进行处理,然后生成一个新的数组返回。
each 的静态方法不支持在回调函数中对遍历数组的再处理。
返回值结果求和例:
var res = $.map(obj,function(value,index){
console.log(index,value);
return value + index;
})
console.log(res);
map运行结果:
2
5
8
11
14
分别是obj数组的两个参数的和
0+2
1+4
2+6
…
each运行结果
var res2 = $.each(obj,function(index,value)
{
console.log(index, value);
return value + index;
});
console.log(res2);
each方法return求和结果:
数组没变,没进行再次组合运算
2
4
6
8
10