这篇文章中主要来归纳整理一下常用的数组操作方法。
一、转换方法
var colors = ["red", "blue", "green"];
alert(colors.toString()); //red, blue, green
alert(colors.valueOf()); //red, blue, green
alert(colors); //red, blue, green
如果不想用逗号分隔的字符串来返回数组项的话,则可以使用 join() 方法。join() 方法接收一个参数,即用作分隔符的字符串,然后返回包含所有数组项的字符串。如下:
var colors = ["red","green","blue"];
alert(colors.join("||")) //red || green || blue
alert(colors.join(",")) //red, green, blue
如果不给join() 传入参数或者传入undefined的话,则默认以逗号作为分隔符。
二、栈方法(LIFO Last-In-First-Out,后进后出)
push(): 可以接收任意数量的参数,然后逐个添加到数组末尾,并返回修改后数组的长度。
pop(): 从数组末尾移除最后一项,减少数组的length值,返回移除的项。
var colors = new Array();
var count = colors.push("red","green"); //推入两项
alert(count); //2
count = colors.push("black");
alert(count); //3
var item = colors.pop(); //black
alert(colors.length); //2
三、队列方法(FIFO:First-In-First-Out)
shift(): 移除数组中的第一项并返回该项,同时将数组长度减1
unshift(): 在数组前端添加任意个想并返回新数组的长度
四、重排序方法
reverse(): 反转数组顺序
sort(): 按升序排列数组项,即最小的在最前,最大的在最后。sort()方法会调用每个数组项的toString()方法,然后比较得到的字符串。
var values = [0,1,5,10,15];
values.sort();
alert(values); //0,1,10,15,5
在这里可以看到,虽然例子顺序没有问题,但是sort()方法会根据测试字符串的结果改变原来的顺序。
想要改进sort()方法,可以接收一个比较函数作为参数,便于我们指定哪个值位于哪个值前面。
function compare(value1,value2){
if(value1<value2){
return -1;
}else if(value1>value2){
return 1;
}else{
return 0;
}
}
var values = [0,1,5,10,15];
values.sort(compare);
alert(values); //0,1,5,10,15
上述方法保证了数值按照正确的升序排序。
对于数值类型或者其valueOf()方法会返回数值类型的对象类型,可以使用一个更简单的比较函数。这个函数只要用第二个值减去第一个值即可。
function compare(value1,value2){
return value2-value1;
}
五、操作方法
- concat(): 连接两个数组并返回新数组。
var colors = ["red","green","blue"];
var colors2 = colors.concat("yellow","black");
alert(colors2); //red,green,blue,yellow,black
2.slice(): 接收两个参数,即要返回项的起始和结束位置。如果只有一个参数,则从当前位置开始直到数组末尾。slice() 方法不会影响当前数组。该方法可以看做对数组指定位置的复制。
*如果slice()方法中有一个负数,则用数组长度加上该数来确定相应的位置。
在一个包含五项的数组上调用slice(-2,-1)与调用slice(3,4)得到的结果相同。
3.splice(): 这个方法有三个功能
①删除: 可以删除任意数量的项,只需指定两个参数。要删除的第一项的位置和要删除的项数
例如:splice(0,2) 会删除数组中的前两项。
②插入:提供三个参数:起始位置、0(要删除的项数)和要插入的项。如:
splice(2,0,”red”,”green”) 会从当前数组的位置2开始插入字符串”red”和”green”。
③替换:可以向指定位置插入任意数量的项。插入的项数不必与删除的项数相等。例如,splice(2,1,”red”,”green”) 会删除当前数组位置2的项,然后再从位置2开始插入字符串”red”和”green”。
splice()方法始终返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除任何项,则返回一个空数组)。
六、位置方法
1.indexOf(): 从数组的开头开始向后查找,若找不到则返回-1。
2.lastIndexOf: 从数组的末尾开始向前查找,若找不到则返回-1。