对jquery.map使用详解()方法

对jquery.map使用详解()方法
原型方法图与每个方法相似。它调用同名的静态方法,但返回的数据必须处理的另一个原型法与pushstack方法。
映射:函数(回调){
返回this.pushstack(jquery.map(这个功能(元素、我){
返回callback.call(元素、我、元);
});
},
本文主要分析在下一篇文章的分析方法,静态地图pushstack。

首先了解下一个地图的使用(手动内容)

map将元素从一个数组转换成另一个数组。

每个数组元素调用转换函数作为一个参数,它将赋予转换函数一个元素,该元素表示转换后的元素作为参数。

转换函数可以返回转换后的值、null(删除数组中的项)或包含值的数组,并将其扩展到原始数组中。

参数

arrayorobject,callbackarray /对象,functionv1.6

一个arrayorobject:数组或对象。

它被称为每个数组元素,它给出转换函数一个表示转换元素作为参数的元素。

函数可以返回任何值。

此外,这个函数可以设置为字符串,当它被设置为字符串时,它将被视为lambda形式(缩写形式)。其中a表示数组元素。

例如,a表示函数(a){返回a;}。

例1:
数组4的每个元素添加到一个新数组中。
jQuery代码:
美元。地图({0,1,2},功能(N){
返回n + 4;
});
结果:
{ 4, 5, 6 }

例2:
超过0的原始数组有1个元素,或者删除。
jQuery代码:
美元。地图({0,1,2},功能(N){
返回n > 0 n + 1:null;
});
结果:
{ 2, 3 }

例3:
数组中的每一个元素都扩展到一个包含它自己和它的值加上1个数组的元素,并转换成一个新数组。
jQuery代码:
美元。地图({0,1,2},功能(N){
返回{,n,+ 1 };
});
结果:
{ 0, 1, 1,2, 2, 3 }

可以看出,map方法类似于每种方法。它通过执行每个对象或数组项的回调函数来实现数组或对象的操作,但这两种方法之间有许多不同之处。

例如,每个()返回原始数组,不创建数组,而map则创建一个新数组。每一个通过这个指向当前数组或对象的值,和地图指向窗口,因为源代码,与每个对象是冒充的。

例如:
可变项目= {三};
$(项目、函数(){(){
警报(这是+本);
});
一个新条目= $(var。地图项目,功能(我){)
返回i + 1;
});
是{ } / /一个新条目2、3、4、5
使用每一个或更改原始项数组,以及使用map,项不改变,只需创建一个新数组即可。

项目0,1,2,3,4,5,6,7,8,9 } = { var;
无功itemslessthanequalfive =美元。地图(项目、功能(我){)
删除所有 项> 5
如果(5)
返回null;
还我;
});
/ / itemslessthanequalfive = { 0,1,2,3,4,5 }

回到地图源代码
仅用于内部使用
图:功能(单元、回调,arg){
var值,键,
我= 0,
长度= elems.length,
对象被视为数组
ISArray = elems是jQuery的长度定义的类型的长度| |!= = = = =数((长度>0单元0单元{ { 1 } }长度长度)| | | | jquery.isarray(单元)= 0);

将数组中的每一项转换为它们的
如果(ISArray){
为(;;i;<长度;i + +){
价值=回调(elems {我},我,阿根廷);

如果(值)!= NULL){
RET { ret.length } =价值;
}
}

对象上的每一个键,
{人}
对于(关键在艾丽美){
价值=回调(elems {key},关键,Arg);

如果(值)!= NULL){
RET { ret.length } =价值;
}
}
}

任何嵌套数组
返回ret.concat.apply({ },RET);
},

第一个语句或几个变量来准备下一次遍历,这jsarray变量是用来区分简单对象和数组之间,布尔复合表达式较长但记住JS运算符的优先级是不难理解的,首先是逻辑和逻辑然后括号或一致的任务,然后我们可以分析。

第一个括号先计算并将结果与长度的结果,类型的长度定义!= = = = =号的两个必要条件是最后一单元再次与jQuery逻辑或运算,简单的说就是ISArray真是:

1,换句话说,真正的单元是jQuery是jQuery对象

2、不定长的长度!= = = = = number > 0 and length elems{0 elems{length -1) ||} length jQuery.isArray (elems) = 0 || that at least three to set up a

可以分成3个小例子

长度的存在是数字和长度等属性数组被遍历或类数组大于0 length-1。这保证了它可以通过,例如,jQuery对象,domlist对象等。

长度是存在的,是一个数字,长度属性是0,如果它是0,它没有关系,如果它不遍历。

长度是存在的,是数字的,要遍历的对象是一个纯数组。

在这些条件满足的情况下,结果是从ISArray结果分离,与用于循环数组,并对…对象中的循环
将数组中的每一项转换为它们的
如果(ISArray){
为(;;i;<长度;i + +){
价值=回调(elems {我},我,阿根廷);

如果(值)!= NULL){
RET { ret.length } =价值;
}
}

是一个数组或数组的每个值和直接指针和arg参数循环执行回调函数的参数,参数是供内部使用的方法,每一个和其他一些jQuery方法非常相似,仅在回调函数执行不返回null返回的结果的实现添加到新数组,对象的操作也因此跳过
任何嵌套数组
返回ret.concat.apply({ },RET);
最后,结果集是平的,你为什么有这一步因为map是第三个可以在前一个示例中扩展数组的示例:
美元。地图({0,1,2},功能(N){
返回{,n,+ 1 };
});
如果使用这种方式,新数组是一个二维数组,因此必须减少它。

ret.concat.apply({ },RET)相当于{ }。concat.apply({ },RET)是关键角色的申请,因为第二应用参数RET阵列分成多个参数指定位置的二维数组成此使用一维数组是值得收藏。
对map方法进行了简单分析,并对有限能力的误差进行了修正。

以上是本文的全部内容,希望大家能喜欢。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部