详解jQuery之数组处理:

jQuery的数组处理,便捷,功能齐全. 最近的项目中用到的比较多,深感实用,一步到位的封装了很多原生js数组不能企及的功能. 最近时间紧迫,今天抽了些时间回过头来看 jQuery中文文档 中对数组的介绍,顺便对jQuery数组做个总结.温故,知新.

1. $.each(array, [callback]) 遍历[常用]

解释: 不同于例遍 jQuery 对象的 $().each() 方法,此方法可用于例遍任何对象(不仅仅是数组哦~). 回调函数拥有两个参数:第一个为对象的成员或数组的索引, 第二个为对应变量或内容. 如果需要退出 each 循环可使回调函数返回 false, 其它返回值将被忽略.

each遍历,相信都不陌生,在平常的事件处理中,是for循环的变体,但比for循环强大.在数组中,它可以轻松的攻取数组索引及对应的值.例:

var _mozi=['墨家','墨子','墨翟','兼爱非攻','尚同尚贤']; //本文所用到的数组, 下同

$.each(_mozi,function(key,val){

//回调函数有两个参数,第一个是元素索引,第二个为当前值

alert('_mozi数组中 ,索引 : '+key+' 对应的值为: '+val);

});

相对于原生的for..in,each更强壮一点. for..in也可以遍历数组,并返回对应索引,但值是需要通过arrName[key]来获取;

2. $.grep(array, callback, [invert]) 过滤数组[常用]

解释: 使用过滤函数过滤数组元素.此函数至少传递两个参数(第三个参数为true或false,对过滤函数返回值取反,个人觉得用处不大): 待过滤数组和过滤函数. 过滤函数必须返回 true 以保留元素或 false 以删除元素. 另外,过滤函数还可以是可设置为一个字条串(个人不推荐,欲了解自行查阅);

$.grep(_mozi,function(val,key){

//过滤函数有两个参数,第一个为当前元素,第二个为元素索引

if(val=='墨子'){

alert('数组值为 墨子 的下标是: '+key);

}

});

var _moziGt1=$.grep(_mozi,function(val,key){

return key>1;

});

alert('_mozi数组中索引值大于1的元素为: '+_moziGt1);

var _moziLt1=$.grep(_mozi,function(val,key){

return key>1;

},true);

//此处传入了第三个可靠参数,对过滤函数中的返回值取反

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){

//为数组元素扩展一个新元素

return [val,(val+'[扩展]')];

});

alert('在每个元素后面加\'[新加]\'字符后的数组为: '+ _mapArrA);

alert('只给元素 墨子 添加字符后的数组为: '+ _mapArrB);

alert('为原数组中每个元素,扩展一个添加字符\'[新加]\'的元素,返回的数组为 '+_mapArrC);

4 .$.inArray(val,array)判断值是否存在于数组中[常用]

解释: 确定第一个参数在数组中的位置, 从0开始计数(如果没有找到则返回 -1 ).

记得indexOf()方法了吗? indexOf()返回字符串的首次出现位置,而$.inArray()返回的是传入参数在数组中的位置,同样的,如果找到的,返回的是一个大于或等于0的值,若未找到则返回-1.现在, 知道怎么用了吧. 有了它, 判断某个值是否存在于数组中,就变得轻而易举了.

var _exist=$.inArray('墨子',_mozi);

var _inexistence=$.inArray('卫鞅',_mozi)

if(_exist>=0){

alert('墨子 存在于数组_mozi中,其在数组中索引值是: '+_exist);

}

if(_inexistence<0){

alert('卫鞅 不存在于数组_mozi中!,返回值为: '+_inexistence+'!');

}

5 .$.merge(first,second)合并两个数组[一般]

解释: 返回的结果会修改第一个数组的内容——第一个数组的元素后面跟着第二个数组的元素.

这个方法是用jQuery的方法替代原生concat()方法, 但功能并没有concat()强大, concat()可以同时合并多个数组.

//原生concat()可能比它还简洁点

_moziNew=$.merge(_mozi,['鬼谷子','商鞅','孙膑','庞涓','苏秦','张仪'])

alert('合并后新数组长度为: '+_moziNew.length+'. 其值为: '+_moziNew);

6 .$.unique(array)过滤数组中重复元素[不常用]

解释: 删除数组中重复元素. 只处理删除DOM元素数组,而不能处理字符串或者数字数组.

第一次看到这个方法,觉得这是个很便捷的方法, 可以过滤重复, 哈, 多完美, 但仔细一看, 仅限处理DOM元素. 功能8折了.所以, 我给它定义成了一个不常用的元素, 至少, 我用jQuery以来没用到过它.

var _h2Arr=$.makeArray(h2obj);

//将数组_h2Arr重复一次

_h2Arr=$.merge(_h2Arr,_h2Arr);

var _curLen=_h2Arr.length;

_h2Arr=$.unique(_h2Arr);

var _newLen=_h2Arr.length;

alert('数组_h2Arr原长度值为: '+_curLen+' ,过滤后为: '+_newLen

+' .共过滤 '+(_curLen-_newLen)+'个重复元素')

7. $.makeArray(obj) 将类数组对象转换为数组[不常用]

解释: 将类数组对象转换为数组对象, 类数组对象有 length 属性,其成员索引为0至 length-1.

这是个多余的方法, 无所不能的$本来就包含了这个功能. jQuery官网上解释的非常模糊. 其实, 它就是将某个类数组对象(比如用getElementsByTagName获取的元素对象集合)转换成数组对象.

var _makeArr=$.makeArray(h2obj);

alert('h2元素对象集合的数据类型转换为: '+_makeArr.constructor.name);//输出Array

8. $(dom).toArray()将所有DOM元素恢复成数组[不常用]

解释: 把jQuery集合中所有DOM元素恢复成一个数组;

并不常用的方法, 个人甚至觉得它和$.makeArray一样多余.

var _toArr=$('h2').toArray();

alert('h2元素集合恢复后的数据类型是: '+_toArr.constructor.name);

jq数组赋值 java_js,jquery,数组操作小结相关推荐

  1. java从键盘为数组赋值,java给数组赋值

    java 动态数组赋值,java对象数组详解,java二维数组赋值,java给数组赋值 java数组动态赋值,从零学java笔录-第24篇 图解一维数组在内存中,java二维数组赋值,java给数组赋 ...

  2. access vba 常量数组赋值_09c语言数组详解

    数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来.这些按序排列的同类数据元素的集合称为数组. 在C语言中, 数组属于构造数据类型.一个数组可以分解为多个数组元素,这些数组 ...

  3. 数据数组赋值_嵌入式-数组赋值

    C语言中表达数据的基本类型时,用基本数据类型描述,例如整型,字符型,浮点型.在表达数据的复杂结构时,使用了构造数据类型这样的特殊类型描述,例如数组,结构体,共用体.数组是最常用的构造类型,也是最简单的 ...

  4. 二维数组 赋值_3.9数组(数组基本使用、数组的循环、数组拷贝、数组排序、多维数组)...

    3.9数组 3.9.1数组基本使用 数组,英文叫Array,是一种数据结构,是用来存放同一数据类型数值的集合.例如存放30个int型数值.存放100个double型数值等等. 我们知道使用一个变量,需 ...

  5. android object数组赋值_Java对象数组定义与用法详解

    本文实例讲述了Java对象数组定义与用法.分享给大家供大家参考,具体如下: 所谓的对象数组,就是指包含了一组相关的对象,但是在对象数组的使用中一定要清楚一点:数组一定要先开辟空间,但是因为其是引用数据 ...

  6. java通过键盘输入数组赋值并交换数组元素最大值和最小值

    步骤: 定义数组,声明最大最小值.数组交换中间值.最大最小索引值.扫描器类Scanner 循环输入元素值,遍历数组检查元素的值是否正确,找出最大最小值以及对应的索引值 交换最大最小值,遍历数组检查元素 ...

  7. c 语言定义2维字符串数组赋值,二维数组赋值字符串 c 语言 二维字符串数组赋值问题...

    C语言中二维字符数组应该怎样赋值? c语言二维数组如何定义字符串????急... 二维字符数组的定义格式为:char 数组名[第一维大小][第二维大小]; 例如:char c[3][10]; //定义 ...

  8. php给二维数组加值,php给数组赋值(二维数组赋值)详解

    在php中数组赋值很简单,如果是一维数组赋值比二维数组或多维数组更简单,下面我来给各位同学介绍给数组赋值各种实例介绍,有需要了解的朋友可参考. PHP数组赋值呢?如下: 例1,一维数组赋值  代码如下 ...

  9. php数组赋值方式,php数组赋值方式

    推荐操作系统:windows7系统.PHP5.6.DELL G3电脑 1.两种赋值 (1)传值赋值 在PHP中,传递赋值是默认的传递方式.如果某个变量的值被赋予了另一个变量,那么改变其中一个的值对其他 ...

最新文章

  1. Some thoughts on my own O/R Mapping or Code Generation tools
  2. Java19-day10【标准输入输出流、字节字符打印流、对象序列化-反序列化流、serialVersionUIDtransient、Properties】
  3. 用幻灯片做完整的“一站到底”抢答器
  4. split逗号分割中文出现乱码java_Java中URL传中文时乱码的问题解决方案
  5. java 系统音量案例_android 实现手机音量的控制 实例源码
  6. jsp脚本、jsp标准动作、EL表达式、JSTL标签
  7. ps读写ddr3里面的数据 zynq_Zynq:用PS控制DDR3内存读写
  8. android 系统(85)---MAT 工具使用
  9. Oracle11g新特性:在线操作功能增强-表增加包含默认值的字段(转载)
  10. win10删除开机密码_取消WIN10开机密码的方法
  11. 通过 Android SDK Manager 安装面向 Android* 模拟器插件的英特尔® 凌动™ x86 系统映像...
  12. Docker组队学习(一)
  13. 设计模式C++(Strategy策略模式)
  14. 智课雅思词汇---二十三、名词性后缀mony
  15. 短网址防封的原理是什么?
  16. linux带方括号进程,Linux特殊符号大全(转摘)
  17. 如何实现:每天收集数据到表格,但只看到当天的数据?
  18. 我的2011,一半是海水,一半是烈焰
  19. 2019年,线下营销有哪些重要趋势?
  20. w ndows摄像头驱动怎么安,一步一步教你安装如何摄像头驱动(图)

热门文章

  1. php源码icloud,通过PHP的iCloud CalDAV
  2. Mybatis实现自定义TypeHandler
  3. 图片打印(iframe)
  4. BUUCTF NewStarCTF 公开赛赛道Week4 Writeup
  5. 学姐面经,不管怎样,先转载过来,以后慢慢享用
  6. 如何成为一个成功的人?
  7. 文献检索工具 | 计算机类英文文献检索数据库DBLP
  8. python保存变量为csv_python excel存储为csv
  9. B.FRIENDit壁虎忍者办公静音巧克力有线键盘的特色有哪些呢?
  10. 手机怎么删除计算机搜索记录,怎样删除搜索记录