jQuery的each与map的区别
来源:互联网 发布:工薪 理财 知乎 编辑:程序博客网 时间:2024/05/19 23:12
1、$.map(array,function)
语法分析:为包装集中的每一个元素调用回调函数,并将返回值收集到jQuery对象的实例中,在回调函数中,this指向每次迭代中的当前DOM元素。
2、$.each(array,function)
语法分析:对数组array中的每一个元素,调用function函数处理,但没有返回值(因此不管在callback里面加不加return,效果都是一样的)。
$.each()函数可用于迭代任何集合,无论是名/值对象(JavaScript对象)或数组。
(1)遍历数组(有附件参数)
$.each(Array, function(p1, p2){
this; //这里的this指向每次遍历中Array的当前元素
p1; p2; //访问附加参数
}, ['参数1', '参数2']);
(2)遍历对象(没有附加参数)
$.each(Object, function(name, value) {
this; //this指向当前属性的值
name; //name表示Object当前属性的名称
value; //value表示Object当前属性的值
});
两者的区别:
map()方法主要用来遍历操作数组和对象,each()主要用于遍历jquery对象。
each()返回的是原来的数组,并不会新创建一个数组。
map()方法会返回一个新的数组。如果在没有必要的情况下使用map,则有可能造成内存浪费。
测试例子:
总结:当遍历数组的时候,each因为没有返回值,所以用不用return都不会改变其值,map因为是创建一个新的数组,所以对原来的数组也不会造成影响。
当遍历对象的时候,each遍历时候如果改动了参数值(不管return有木有加),原来的对象即被改变了,而map遍历的时候改动了参数值(必须加return,否则返回[]),遍历创建的新的对象和原来的对象均被改变了。
var obj1 = [10,20];$.each(obj1,function(i,param){ return param+1;});//[10, 20]//obj1:[10,20]var obj2 = [10,20];$.each(obj2,function(i,param){ return [param+1];});//[10, 20]//obj2:[10,20]var obj3 = [10,20];$.each(obj3,function(i,param){ return [[param+1]];});//[10, 20]//obj3:[10,20]var obj4 = [10,20];$.map(obj4,function(param){ return param+1;});//[11, 21]//obj4:[10,20]var obj5 = [10,20];$.map(obj5,function(param){ return [param+1];});//[11, 21]//obj5:[10,20]var obj6 = [10,20];$.map(obj6,function(param){ return [[param+1]];});//[[11],[21]]//obj6:[10,20]var obj7 = { 1:{id:'001'}, 2:{id:'002'}};$.each(obj7,function(i,param){ return (param.id += 1);});//{1:{id:'0011'},2:{id:'0021'}};//obj7:{1:{id:'0011'},2:{id:'0021'}}var obj7 = { 1:{id:'001'}, 2:{id:'002'}};$.each(obj7,function(i,param){ (param.id += 1);});//{1:{id:'0011'},2:{id:'0021'}};//obj7:{1:{id:'0011'},2:{id:'0021'}}var obj8 = { 1:{id:'001'}, 2:{id:'002'}};$.map(obj8,function(param){ return param.id += 1;});//["0011", "0021"]//obj8:{1:{id:'0011'},2:{id:'0021'}}var obj8 = { 1:{id:'001'}, 2:{id:'002'}};$.map(obj8,function(param){ param.id += 1;});//[]//obj8的值:{1:{id:'0011'},2:{id:'0021'}}var obj9 = { 1:{id:'001'}, 2:{id:'002'}};$.each(obj9,function(i,param){ return [[param.id += 1]];});//{1:{id:'0011'},2:{id:'0021'}}//obj9:{1:{id:'0011'},2:{id:'0021'}}var obj10 = { 1:{id:'001'}, 2:{id:'002'}};$.map(obj10,function(param){ return [[param.id += 1]];});// [["0011"],["0021"]]//obj10的值: {1:{id:'0011'},2:{id:'0021'}}转载的链接:http://blog.csdn.net/liaozhongping/article/details/53502974
0 0
- jQuery的each与map的区别
- jQuery的each与map的区别
- jQuery中的 each() 与 map() 的区别
- jquery中map函数与each函数的区别
- jquery 的$().each与$.each的区别
- jQuery中$.each()与$().each的区别
- jQuery中each跟map的区别
- $.map()与$.each()的区别【笔记】
- jquery的$().each,$.each区别
- jquery的$().each,$.each区别
- jquery中$.each()与$().each()的用法和区别
- jquery的each,map,has
- $.each与$().each的区别
- jquery的$().each,$.each的区别
- jquery的$().each,$.each的区别
- jquery的$().each,$.each的区别
- jquery的$().each和$.each的区别
- jquery的$().each,$.each的区别
- 数组5:连续子数组的最大和
- AbstractQueuedSynchronizer的介绍和原理分析
- 仅用四行代码就可以挖掘你的QQ聊天记录
- 第一章习题分析
- 数组6:把数组排成最小的数
- jQuery的each与map的区别
- AOJ.862 平面上最近点对
- springmvc(八)---拦截器的使用
- 数组7:构建乘积数组
- PHP文件目录操作
- Linux(Centos6.8)环境下安装jdk及Tomcat
- Lucene 6.5.0整合IKAnalyzer至Maven
- AOJ.862 平面上最近点对
- Docker初识及常用命令