数组的常用方法

插入和删除

  • 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()反转数组顺序

    1
    2
    3
    var values = [1,2,3,4,5];
    values.reverse();
    alert(values); // 5,4,3,2,1
  • sort()默认情况下,会调用每一项的toString()方法,因此是按照ASCII 码排序的,结果按升序排列数组项————最小值位于最前面,最大值位于最后面

    1
    2
    3
    var values = [0,1,5,10,15];
    values.sort();
    alert(values); // 0,1,10,15,5

    sort()方法可以接收一个比较函数,以便我们执行哪个值位于哪个值的前面:比较函数接收两个参数,如果第一个参数应该位于第二个参数之前则返回一个负数,如果两个参数相等返回0,如果第一个参数应该位于第二个参数之后则返回正数。

    下面这个例子实现了升序排列:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function 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

    上面这个例子中的比较函数可以更简化:

    1
    2
    3
    function compare(v1,v2){
      return v1 - v2;
    }

操作方法

  • concat()返回一个新数组,是将参数添加到原数组中构成的,原来的数组保持不变

    1
    2
    3
    4
    5
    var 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()返回从原数组中指定开始下标到结束下标之间的项组成的新数组,原来的数组保持不变

    1
    2
    3
    var 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,... 返回被删除的项,如果没有任何删除的项,则返回一个空数组

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var 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()从数组开头开始向后查找

    1
    2
    3
    4
    var 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()从数组末尾开始查找

    1
    2
    3
    4
    var 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

上一节:数组的概念

下一节:函数