数组的常用方法
插入和删除
-
push()接收任意数量的参数,将它们添加到数组末尾,返回数组长度
-
pop()从数组末尾伤处最后一项,返回被移除的项
-
unshift()接收任意数量的参数,将它们添加到数组前端,返回数组的长度
-
shift()移除数组中第一项,即索引为0的项,返回被移除的项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | var color = []; var length1 = color.push( "red" , "blue" ); // 从末尾添加 alert(length1); // 2 alert(color); // red,blue var deleteItem1 = color.pop(); // 从末尾删除 alert(deleteItem1); // "blue" alert(color.lenght) // 1 alert(color); // red var length2 = color.unshift( "yellow" , "green" ); // 从前端添加 alert(length2); // 3 alert(color); // yellow,green,red var deleteItem2 = color.shift(); // 从前端删除 alert(deleteItem2); // "yellow" alert(color.lenght) // 2 alert(color); // green,red |
重排序方法
-
reverse()反转数组顺序
123var
values = [1,2,3,4,5];
values.reverse();
alert(values);
// 5,4,3,2,1
-
sort()默认情况下,会调用每一项的toString()方法,因此是按照ASCII 码排序的,结果按升序排列数组项————最小值位于最前面,最大值位于最后面
123var
values = [0,1,5,10,15];
values.sort();
alert(values);
// 0,1,10,15,5
sort()方法可以接收一个比较函数,以便我们执行哪个值位于哪个值的前面:比较函数接收两个参数,如果第一个参数应该位于第二个参数之前则返回一个负数,如果两个参数相等返回0,如果第一个参数应该位于第二个参数之后则返回正数。
下面这个例子实现了升序排列:
12345678910111213function
compare(v1,v2){
if
(v1 < v2){
return
-1;
}
else
if
(v1 > v2){
return
1;
}
else
{
return
0;
}
}
var
values = [1,10,5,15,0];
values.sort(compare);
alert(values);
// 0,1,5,10,15
上面这个例子中的比较函数可以更简化:
123function
compare(v1,v2){
return
v1 - v2;
}
操作方法
-
concat()返回一个新数组,是将参数添加到原数组中构成的,原来的数组保持不变
12345var
a = [1,2,3,4,5];
var
b = a.concat(6,7);
//a:[1,2,3,4,5] b:[1,2,3,4,5,6,7]
var
c = a.concat([6,7],8);
//a:[1,2,3,4,5] c:[1,2,3,4,5,6,7,8]
-
slice()返回从原数组中指定开始下标到结束下标之间的项组成的新数组,原来的数组保持不变
123var
a = [1,2,3,4,5];
var
b = a.slice(2,5);
//a:[1,2,3,4,5] b:[3,4,5]
-
splice(start,deleteCount,val1,val2,...)从start位置开始删除deleteCount项,并从该位置起插入val1,val2,... 返回被删除的项,如果没有任何删除的项,则返回一个空数组
1234567891011var
a = [1,2,3,4,5];
var
b = a.splice(2,2,7,8,9);
//a:[1,2,7,8,9,5] b:[3,4]
var
b = a.splice(0,1);
//同shift
a.splice(0,0,-2,-1);
//同unshift
var
b = a.splice(a.length-1,1);
//同pop
a.splice(a.length,0,6,7);
//同push
位置方法
ECMAScript5为数组添加了两个位置方法:indexOf()和lastIndexOf()。这两个方法都接受两个参数:要查找的项和(可选)表示查找起点的位置索引。返回找到的项在数组中的位置,若没有找到返回-1。
-
indexOf()从数组开头开始向后查找
1234var
a = [1,2,3,4,5,4,3,2,1];
alert(a.indexOf(4));
// 3
alert(a.indexOf(4,4));
// 5
alert(a.indexOf(10));
// -1
-
lastIndexOf()从数组末尾开始查找
1234var
a = [1,2,3,4,5,4,3,2,1];
alert(a.lastIndexOf(4));
// 5
alert(a.lastIndexOf(4,4));
// 3
alert(a.lastIndexOf(10));
// -1