Jquery数组操作个人总结
更新时间:2013年11月13日15:41:09 作者:
jQuery的字段处理方便且功能齐全。 在最近的项目中被大量使用。 我最近时间很紧迫。 我花了一些时间回顾了 jQuery 英文文档并对 jQuery 字段进行了总结。
jQuery的字段处理方便且功能齐全。 在最近的项目中用得很多,我觉得非常实用。 它封装了很多原生js字段无法一步实现的功能。 最近时间比较紧迫,所以今天抽了点时间回顾一下。 阅读jQuery英文文档中对链表的介绍,并对jQuery的字段进行总结。 回顾过去并学习新的。
强烈建议您打开DEMO,然后阅读下面的说明: 点击此处查看DEMO
1. $.each(array, [callback]) 遍历【常用】
说明:与迭代 jQuery 对象的 $().each() 方法不同,该方法可以用来迭代任何对象(不仅仅是链表~)。 回调函数有两个参数:第一个是对象的成员或者链表的索引,第二个是对应的变量或者内容。 如果需要退出each循环,可以让回调函数返回false,其他返回值将被忽略。
相信每一次穿越都是大家都熟悉的。 在正常的风暴管理中,它是 for 循环的变体,但比 for 循环更强大。 在链表中,它可以轻松捕获字段索引和对应的值。 例如:
复制代码代码如下:
var _mozi=['墨家','墨子','墨斋','爱无攻击','商通尚贤']; //本文用到的字段,下同
$.each(_mozi,函数(key,val){
//回调函数有两个参数,第一个是元素索引,第二个是当前值
alert('_mozi字段中,索引:'+key+'对应值:'+val);
});
与原生的 for..in 相比,每个都更加健壮。 for..in也可以遍历字段并返回对应的索引,但是需要通过arrName[key]获取值;
2、$.grep(array,callback,[invert])过滤链表【常用】
说明:使用filter函数过滤链表的元素。 这个函数至少传递两个参数(第三个参数为true或false,将过滤函数的返回值反转,我个人认为没什么好处):要过滤的字段和过滤函数。 Filter 函数 必须返回 true 才能保留元素,返回 false 才能删除元素。 另外,过滤函数还可以设置为字符串(我不推荐,想了解更多请查看);
复制代码代码如下:
$.grep(_mozi,函数(val,key){
//过滤函数有两个参数,第一个是当前元素,第二个是元素索引
if(val=='墨子'){
alert('数组值为墨子的下标:'+key);
});
var _moziGt1=$.grep(_mozi,function(val,key){
返回键>1;
});
alert('_mozi字段中索引值小于1的元素为:'+_moziGt1);
var _moziLt1=$.grep(_mozi,function(val,key){
返回键>1;
},真的);
//这里传入了第三个可靠的参数,过滤函数中的返回值取反了。
alert('_mozi字段中索引值大于等于1的元素为:'+_moziLt1);
3. $.map(array,[callback]) 根据给定条件转换字段【通用】
说明:将为每个数组元素调用作为参数的转换函数,并且转换函数将传递一个表示转换后的元素的元素作为参数。 转换函数可以返回转换后的值、null(删除链表中的项)或包含值的链表,扩展为原始字段。
这是一个非常强大的方法,但并不常用。 它可以根据特定条件更新数组元素的值,或者根据原始值扩展一个新的复制元素。
复制代码代码如下:
var _mapArrA=$.map(_mozi,function(val){
return val+'[新增]';
});
var _mapArrB=$.map(_mozi,function(val){
return val=='墨子' ? '[仅添加墨子]'+val : val;
});
var _mapArrC=$.map(_mozi,function(val){
//向数组元素添加一个新元素
返回[val,(val+'[扩展]')];
});
alert('每个元素前面添加'[new]'字符后的链表为:'+ _mapArrA);
alert('仅给元素墨子添加字符后的链表为:'+ _mapArrB);
alert('为原链表中的每个元素,展开一个字符为'[新添加]'的元素,返回的链表为'+_mapArrC);
4.$.inArray(val,array) 判断值是否存在于链表中【常用】
说明:确定第一个参数在链表中的位置,从0开始计数(如果没有找到则返回-1)。
还记得indexOf()方法吗? indexOf() 返回字符串第一次出现的位置,而 $.inArray() 返回传入参数在链表中的位置。 同样,如果找到,则返回小于或等于0的值,如果没有找到,则返回-1。 现在,您知道如何使用它了。 有了它,就可以很容易判断链表中是否存在某个值。
复制代码代码如下:
var _exist=$.inArray('墨子',_mozi);
var _inexistence=$.inArray('魏阳',_mozi)
如果(_存在>=0){
alert('Mozi存在于链表_mozi中数组循环 jquery,其在链表中的索引值为:'+_exist);
if(_inexistencealert('链表_mozi中不存在魏阳!,返回值为:'+_inexistence+'!');
5.$.merge(first,second) 合并两个链表【通用】
说明:返回的结果将改变第一个链表的内容——第一个链表的元素在第二个链表的元素之前。
该方法使用jQuery来替代原生的concat()方法,但其功能不如concat()强大,concat()可以同时合并多个字段。
复制代码代码如下:
//原生 concat() 可能比实际更简单
_moziNew=$.merge(_mozi,['鬼谷子','商鞅','孙膑','庞涓','苏秦','张仪'])
alert('合并后新的字段宽度为:'+_moziNew.length+'。其值为:'+_moziNew);
6.$.unique(array) 过滤链表中的重复元素【不常用】
说明:删除链表中重复的元素。 它只处理DOM元素链表的删除,而不能处理字符串或数字链表。
第一次听说这个方法,我觉得这是一个非常方便的方法数组循环 jquery,可以过滤重复项。 哈,多么完美啊。 但如果你仔细看的话,它只能处理 DOM 元素。 该功能可享受 20% 的折扣。 所以,我将它定义为一个不常见的元素,至少,自从我开始使用 jQuery 以来,我就没有使用过它。
复制代码代码如下:
var _h2Arr=$.makeArray(h2obj);
//重复字段_h2Arr一次
_h2Arr=$.merge(_h2Arr,_h2Arr);
var _curLen=_h2Arr.length;
_h2Arr=$.unique(_h2Arr);
var _newLen=_h2Arr.length;
Alert('array_h2Arr 原始宽度值为:'+_curLen+',过滤后为:'+_newLen
+' .过滤总共'+(_curLen-_newLen)+'重复元素')
7. $.makeArray(obj) 将类字段对象转换为字段【不常用】
说明:将类字段对象转换为字段对象。 类字段对象有一个length属性,其成员索引从0到length-1。
这是一种多余的方法。 万能的$本来就包含这个功能。 jQuery官网上的解释很模糊。 实际上,它将某个类字段对象(例如通过 getElementsByTagName 获取的元素对象集合)转换为字段对象。 。
复制代码代码如下:
var _makeArr=$.makeArray(h2obj);
alert('h2元素对象集合的数据类型转换为:'+_makeArr.constructor.name);//输出数组
8. $(dom).toArray() 将所有DOM元素恢复到链表中【不常用】
说明:将 jQuery 集合中的所有 DOM 元素恢复到一个字段中;
这不是一个常用的技术,我个人认为它和 $.makeArray 一样多余。
复制代码代码如下:
var _toArr=$('h2').toArray();
alert('恢复后的h2元素集合的数据类型为:'+_toArr.constructor.name);