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.concat([item1[, item2[, . . . [,itemN]]]]); //将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组
6. 链表副本
arrayObj.slice(0); //返回数组的拷贝数组,注意是一个新的数组,不是指向
arrayObj.concat(); //返回数组的拷贝数组,注意是一个新的数组,不是指向
7. 链表元素排序
arrayObj.reverse(); //反转元素(最前的排到最后、最后的排到最前),返回数组地址
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 - 拼接
var ary = [1,2,3,4];
ary.splice(0,ary.length);
console.log(ary); // 输出 [],空数组,即被清空了
形式2----长度参数为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()方法不同jquery判断数组中是否存在某值,该方法可以用来遍历任何对象(不仅仅是链表~)。 ounce函数有两个参数:第一个是对象的成员或者链表Index,第二个是对应的变量或者内容。 如果需要退出每次循环,可以让反弹函数返回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开始计数(如果没有找到jquery判断数组中是否存在某值,返回-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("element(string)",链表的名称)来判断链表是否包含元素。 当元素(字符串)存在时,返回该元素在链表中的下标。 如果不存在返回-1
var array = ["asp.net", "asp.net mvc", "html5", "css3", "jquery", "JavaScript"];
var index = $.inArray("asp.net mvc", array); //包含返回下标,不包含返回-1,结果:index=1
if (index >= 0) {
console.log("数组array包含asp.net mvc下标为:" + index);
} else {
console.log("数组array 不包含asp.net mvc下标为:" + index);
}
8.链表删除一个元素 splice() 方法
splice() 方法向链表添加/删除项,然后返回删除的项。
该方法会改变原来的字段。
arrayObject.splice(索引,多少,item1,...,itemX)
需要索引。 一个整数指定添加/删除项的位置,使用正数指定从链表末尾开始的位置。
需要多少个。 要删除的项目数。 如果设置为 0,则不会删除该项目。
item1,...,itemX 可选。 添加到该字段的新项目。
返回值
数组包含已删除项目的新链接列表(如果有)。
//我们将创建一个新数组,并向其添加一个元素:
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 + "
") //George,John,Thomas,James,Adrew,Martin
arr.splice(2,0,"William")
document.write(arr + "
") //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 + "
") //George,John,Thomas,James,Adrew,Martin
arr.splice(2,1,"William")
document.write(arr) //George,John,William,James,Adrew,Martin
发表评论