jquery数组操作(超全)
1.数组的创建
var arrayObj =new Array(); //创建⼀个数组
var arrayObj =new Array([size]); //创建⼀个数组并指定长度,注意不是上限,是长度
var arrayObj =new Array([element0[, element1[,...[, elementN]]]]); //创建⼀个数组并赋值
要说明的是,虽然第⼆种⽅法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。
2.数组的元素的访问
var testGetArrValue=arrayObj[1];//获取数组的元素值
arrayObj[1]="这是新值";//给数组元素赋予新的值
3.数组元素的添加
arrayObj.push([item1 [item2 [...[itemN ]]]]);// 将⼀个或多个新元素添加到数组结尾,并返回数组新长度
arrayObj.unshift([item1 [item2 [...[itemN ]]]]);// 将⼀个或多个新元素添加到数组开始,数组中的元素⾃动后移,返回数组新长度
arrayObj.splice(insertPos,0,[item1[, item2[,...[,itemN]]]]);//将⼀个或多个新元素插⼊到数组的指定位置,插⼊位置的元素⾃动后移,返回""。
4.数组元素的删除
arrayObj.pop();//移除最后⼀个元素并返回该元素值
arrayObj.shift();//移除最前⼀个元素并返回该元素值,数组中元素⾃动前移
arrayObj.splice(deletePos,deleteCount);//删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素
5.数组的截取和合并
arrayObj.slice(start,[end]);//以数组的形式返回数组的⼀部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素
arrayObj.slice(0);//返回数组的拷贝数组,注意是⼀个新的数组,不是指向
7.数组元素的排序
arrayObj.sort();//对数组元素排序,返回数组地址
8.数组元素的字符串化
arrayObj.join(separator);//返回字符串,这个字符串将数组的每⼀个元素值连接在⼀起,中间⽤ separator 隔开。
toLocaleString 、toString 、valueOf:可以看作是join的特殊⽤法,不常⽤
9.过滤数组
$.grep(array, callback,[invert])过滤数组,此函数⾄少传递两个参数(第三个参数为true或false,表⽰是否取反):待过滤数组和过滤函数.过滤函数必须返回true 以保留元素或false以删除元素
grep(array,callback,invert)
array:待过滤数组;
callback:处理数组中的每个元素,并过滤元素,该函数中包含两个参数,第⼀个是当前数组元素的值,⼀个是当前数组元素的下标,即元素索引值,,此函数应返回⼀个布尔值如$.grep(arr,function(value,index){return index>1;});。另外,此函数可设置为⼀个字符串,当设置为字符串时,将视为“lambda-form”(缩写形式?),其中 a 代表数组元素,i 代表元素索引值。如“a >0”代表“function(a){return a >0;}”
invert:布尔型可选项,默认值false,值为true或false。如果 “invert” 为false或为设置,则函数返回数组中由过滤函数返回true的元素,当”invert” 为true,则返回过滤函数中返回false的元素集。
10.清空数组
⽅式1----splice
var ary =[1,2,3,4];
ary.splice(0,ary.length);
console.log(ary);// 输出 [],空数组,即被清空了
⽅式2----length赋值为0
var ary =[1,2,3,4];
ary.length =0;
console.log(ary);// 输出 [],空数组,即被清空了
⽅式3----赋值为[]
var ary =[1,2,3,4];
ary =[];// 赋值为⼀个空数组以达到清空原数组
扩展
1.使⽤grep删除指定值
var arr =[1,2,3,4,5];
var removeItem =2;
arr = $.grep(arr,function(value){
return value != removeItem;
});
2.数组遍历
不同于例遍 jQuery 对象的 $().each() ⽅法,此⽅法可⽤于例遍任何对象(不仅仅是数组哦~). 回调函数拥有两个参数:第⼀个为对象的成员或数组的索引, 第⼆个为对应变量或内容. 如果需要退出 each 循环可使回调函数返回 false, 其它返回值将被忽略
var _mozi=['墨家','墨⼦','墨翟','兼爱⾮攻','尚同尚贤'];//本⽂所⽤到的数组, 下同
$.each(_mozi,function(key,val){
//回调函数有两个参数,第⼀个是元素索引,第⼆个为当前值
alert('_mozi数组中 ,索引 : '+key+' 对应的值为: '+val);
});
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元素数组,⽽不能处理字符串或者数字数组.
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.判断数组中是否包含某个元素$.inArray()的⽤法
判断数组⾥⾯是否包含某个元素可以使⽤ $.inArray("元素(字符串)",数组名称) 进⾏判断 ,当存在该元素(字符串)时,返回该元素在数组的下标,不存在时返回 -1
var array =["asp","asp mvc","html5","css3","jquery","JavaScript"];
var index = $.inArray("asp mvc", array);//包含返回下标,不包含返回-1,结果:index=1
if(index >=0){
console.log("数组array包含asp mvc下标为:"+ index);
}else{
console.log("数组array 不包含asp mvc下标为:"+ index);
}
8.数组移除某个元素 splice() ⽅法
splice() ⽅法向/从数组中添加/删除项⽬,然后返回被删除的项⽬。
该⽅法会改变原始数组。
arrayObject.splice(index,howmany,item1,…,itemX)
index 必需。整数,规定添加/删除项⽬的位置,使⽤负数可从数组结尾处规定位置。
howmany 必需。要删除的项⽬数量。如果设置为 0,则不会删除项⽬。
item1, …, itemX 可选。向数组添加的新项⽬。
返回值
Array 包含被删除项⽬的新数组,如果有的话。
//我们将创建⼀个新数组,并向其添加⼀个元素:
var arr =new Array(6)
arr[0]="George"
jquery字符串截取arr[1]="John"
arr[2]="Thomas"
arr[3]="James"
arr[4]="Adrew"
arr[5]="Martin"
document.write(arr +"<br />")//George,John,Thomas,James,Adrew,Martin
arr.splice(2,0,"William")
document.write(arr +"<br />")//George,John,William,Thomas,James,Adrew,Martin //将删除位于 index 2 的元素,并添加⼀个新元素来替代被删除的元素:
var arr =new Array(6)
arr[0]="George"
arr[1]="John"
arr[2]="Thomas"
arr[3]="James"
arr[4]="Adrew"
arr[5]="Martin"
document.write(arr +"<br />")//George,John,Thomas,James,Adrew,Martin
arr.splice(2,1,"William")
document.write(arr)//George,John,William,James,Adrew,Martin

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。