原型
方法图与每个方法相似。它调用同名的静态方法,但返回的数据必须
处理的另一个原型法与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方法进行了简单分析,并对有限能力的误差进行了修正。
以上是本文的全部内容,希望大家能喜欢。