$.each工具函数
来源:互联网 发布:网络正常守望先锋卡 编辑:程序博客网 时间:2024/06/07 17:34
each用法举例:
用法1:提前退出循环
//如果有return false那么只会遍历出来第一个元素,也就是[0]=1$.each([1,2,3], function(key, value){ alert("[" + key + "]=" + value);//打印[0]=1 return false;});});用法2:each方法如果传入了第三个参数,那么要对前面的值进行访问只能用this了,回调函数中参数就是第三个参数的值
// 如果传入第三个参数,那么this指向前面那个object第n个属性,n表示迭代次数(所以下面的案例输出:[1,4,5];[2,4,5];[3,4,5])$.each([1,2,3], function(arg1, arg2){ alert("this->"+ {}.toString.call(this));//直接是[object Number]也就是对前面的1,2,3进行了基本类型封装 alert("arg1->"+ typeof arg1);//这里的arg1就是后面的4,arg2就是后面的5 alert("arg2->"+typeof arg2);}, [4, 5]);用法3:如果只有两个参数那么this就是前面的元素(不管三个参数还是两个参数this都是对前面元素的引用,只是两个参数时候除了this还可以用回调函数的参数访问)
//this指向键值,第一个参数是key,第二个是value,第三个是额外参数//打印4,5,3$.each([4,5,3], function(arg1, arg2,arg3){ alert(this);});用法4:我们的jQuery.each方法和each,map实例方法还有is,not,filter等传入函数作为参数的情况下,是几个变态的方法,它在回调函数中第一个参数是下标,第二个参数是元素,其它方法全部是第一个是元素,第二个是下标!
//arg1是index,arg2是value$.each([4,5,3], function(arg1, arg2,arg3){ alert("arguments[0]->"+arguments[0]+"arguments[1]->"+arguments[1]);});用法5:下标+元素
//这种方式:只会输出0,4;1,5因为到遍历3的时候return false那么直接后面的元素不会进行调用callback函数了$.each([4,5,3], function(arg1, arg2){ if(arg1===2) { return false; } alert("arg1->"+arg1+"arg2->"+arg2);});each函数源码分析
each: function( obj, callback, args ) {var value,i = 0,length = obj.length,isArray = isArraylike( obj );//如果传入了第三个参数(这里可以知道undefined在if语句变成了false)if ( args ) {if ( isArray ) {//如果是类数组对象,那么开始遍历这个对象,然后对每一个对象调用callback方法,给callback里面传入的参数是://如果是第i次循环则为:obj[i],以及第三个参数的对象,第三个参数可以是类数组对象for ( ; i < length; i++ ) { value = callback.apply( obj[ i ], args );//this指向obj[i],也就是第一个参数的值(见上面的例子2),同时会把args类数组作为单个的对象逐个封装到函数参数中间//alert(Math.max.apply(null,[1,2,7,3]));就是这个道理if ( value === false ) {break; }}} else {for ( i in obj ) {value = callback.apply( obj[ i ], args );if ( value === false ) {break; } } }// A special, fast, case for the most common use of each//如果没有传入第三个参数} else {//同时也是类数组对象if ( isArray ) {//那么用call而不是apply方法来调用,分别传入参数for ( ; i < length; i++ ) {value = callback.call( obj[ i ], i, obj[ i ] ); //如果有一个在函数执行的时候直接return false,那么就结束循环,下面的都不会调用callback函数了!if ( value === false ) {//如果返回false,那么直接退出循环break;}}} else {//如果没有传入第三个参数,同时传入的也不是类数组对象,那么直接没有函数调用一个对象for ( i in obj ) {value = callback.call( obj[ i ], i, obj[ i ] );if ( value === false ) {break;}}}}return obj;}总结:(1)如果传入了第三个参数那么each函数里面的参数就是就是第三个参数对象,同时对前面键值的访问只能通过this访问
(2)如果没有传入第三个参数,那么each函数里面第一个参数是键名(数组是下标,对象是键名),第二个参数是键值!
0 0
- $.each工具函数
- 使用$.each()工具函数遍历数组
- $.each工具函数的使用方式;遍历
- each() 函数
- $.each()函数
- $.each函数
- each函数
- jquery中的each函数
- perl函数说明(each)
- jQuery遍历函数 each
- each函数的使用
- 浅析 php each 函数
- jQuery 遍历函数 each
- each函数的使用
- $.each的函数使用
- PHP each() 函数
- jQuery each()函数
- jQuery的each函数
- 用MATLAB将多个文件夹内的某些文件汇总到另一个文件夹
- 博客伊始
- 广告英文术语大全
- Android 百度地图(二)——地图切换、定位、添加覆盖物、搜索位置、连线
- optical_flow_evaluation
- $.each工具函数
- Mac下显示/隐藏文件夹
- centos下Openfire安装+集群+Hazelcast插件+Haproxy
- 慢慢数据抓取路,从BeautifulSoup走起
- iOS求职之OC面试题
- 【Balkan2002】【BZOJ1336】Alien最小圆覆盖
- XML文本转为MAP对象的简便方法(利用jackson-dataformat-xml)
- Streaming Media
- hive 1.0.1 安装配置 hadoop 2.6.0