JavaScript数组常用方法
判断某个对象是否是数组:instanceof、Array.isArray()
对于一个网页或者一个全局作用域可以使用instanceof操作符。
if(valueinstanceofArray){ //判断value是否是数组
}
instanceof操作符它假设只有一个全局执行环境,如果网页包含多个框架则使用ECMAScript5新增的Array.isArray()方法。
if(Array.isArray(value)){//判断value是否是数组
}
Array.isArray()方法支持的浏览器有IE9+、Firefor4+、Safari5+、Opera10.5+、Chrome。
如果要在未实现这个方法中的浏览器中检查数组,则使用:
if(Object.prototype.toString.call(value)=="[objectArray]"){
}
将数组转换为字符串:toLocaleString()、toString()、valueOf()、join()
vartest=['a','b','c']; alert(test.toString());//a,b,c alert(test.toLocaleString());//a,b,c alert(test.valueOf());//a,b,c alert(test);//a,b,c默认调用toString()方法 alert(test.join(','));//a,b,c alert(test.join('|'));//a|b|c
添加和移除数组元素方法:push()、pop()、unshift()、shift()
push()方法可以接受任意数量的参数,把他们逐个加到数组末尾,并且返回数组修改后的数组长度。
pop()方法从数组末尾移除最后一项,然后返回移除的项。
unshift()方法在数组前端添加任意数量的参数并返回新数组长度。
shift()方法能够移除数组中第一个项并返回移除的项。
vartest=[]; varcount=test.push('a','b');//从数组末尾逐个添加 count=test.push('c'); alert(count);//3 alert(test);// varitem=test.pop(); alert(item);//c alert(test.length);//2
排序方法:reverse()和sort()
reverse()方法会反转数组项顺,操作数组本身。
sort()方法默认按升序排列数组项,操作数组本身。
vartest=[1,2,3,4,5]; test.reverse(); alert(test);//5,4,3,2,1 vartest2=[0,1,5,10,15]; test2.sort(); alert(test2);//0,1,10,15,5 sort()方法会调用每个数组项的toString()方法,比较字符串,以确定排序。所以这里排序是字符串排序
sort()方法还可以传入一个比较函数。
比较函数在第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等则返回0,第一个参数应该位于第二个之后则返回一个正数。
functioncompare(value1,value2){ if(value1<value2){ return-1; }elseif(value1>value2){ return1; }else{ return0; } } vartest=[0,1,5,10,15]; test.sort(compare); alert(test);//0,1,5,10,15
操作方法:concat()、slice()、splice()
concat()方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。返回一个新的数组。
vara=[1,2,3]; alert(a.concat(4,5));//1,2,3,4,5 vararr=newArray(3) arr[0]="George" arr[1]="John" arr[2]="Thomas" vararr2=newArray(3) arr2[0]="James" arr2[1]="Adrew" arr2[2]="Martin" alert(arr.concat(arr2)); //George,John,Thomas,James,Adrew,Martin vararr=newArray(3) arr[0]="George" arr[1]="John" arr[2]="Thomas" vararr2=newArray(3) arr2[0]="James" arr2[1]="Adrew" arr2[2]="Martin" vararr3=newArray(2) arr3[0]="William" arr3[1]="Franklin" alert(arr.concat(arr2,arr3)) //George,John,Thomas,James,Adrew,Martin,William,Franklin
slice()方法可从已有的数组中返回选定的元素。返回一个新的数组,包含从start到end(不包括该元素)的arrayObject中的元素。
vartest=['a','b','c','d','e']; vararr1=test.slice(1); vararr2=test.slice(1,4); alert(arr1);//b,c,d,e alert(arr2);//b,c,d
splice()方法向/从数组中添加/删除项目,然后返回被删除的项目。操作数组本身。
第一个参数:起始位置、第二个参数:截取的个数、第三个参数:追加的新元素。
//删除 vartest=['a','b','c']; varremoved=test.splice(0,1)//删除第一项 alert(test);//b,c alert(removed);//a返回被删除的项 //插入 vartest2=['a','b','c']; varremoved2=test2.splice(1,0,'d','e')//从位置1开始插入d,e alert(test2);//a,d,e,b,c alert(removed2)//空数组 //替换 vartest3=['a','b','c']; varremoved3=test3.splice(1,1,'d','e')//从位置1开始插入d,e alert(test3);//a,d,e,c alert(removed3)//b
位置方法:indexOf()、lastIndexOf()
ECMAScript5提供方法支持浏览器:IE9+、Firefox2+、Safari3+、Opera9.5+、Chrome
indexOf()方法可返回某个指定的字符串值在字符串中首次出现的位置。
lastIndexOf()方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
一个参数时:表示要查找的值,返回索引位置(从0开始)、两个参数时:第一个参数表示起始位置,第二个参数表示要查找的值。
varnumbers=[1,2,3,4,5,4,3,2,1]; alert(numbers.indexOf(4));//3 alert(numbers.lastIndexOf(4));//5
alert(numbers.IndexOf(4,4));//5 alert(numbers.lastIndexOf(4,4));//3