Aarry类型是js中很常见的类型,Js原生就给了它一些很方便的方法供我们使用,不需要我们去实现。现在我们来总结一下这些常用的方法。 ** splice() **

第一个介绍的是最强大的数组方法splice(),它既可以用于插入数组项,还能用于删除和替换。 splice()方法接受参数,第一个参数是删除数组项的起始位置,第二个参数是删除数组项个数,后面的参数是在删除后添加的数组项内容。 splice()返回的是从原始数组中删除的数组项,若没有删除,则返回空数组。

删除:

    var colors = ["red","blue","black","green","white"]; 
    colors.splice(0,2); //返回["red","blue"],此时colors 为["black","green","white"]
1
2

插入:

    var colors = ["red","blue","black","green","white"]; 
    colors.splice(2,0,"aaa","bbb"); //返回空数组,此时colors 为["red", "blue", "aaa", "bbb", "black", "green", "white"]
1
2

替换:

    var colors = ["red","blue","black","green","white"]; 
    colors.splice(2,1,"aaa"); //返回["black"], 此时colors为["red", "blue","aaa", "green", "white"]
1
2

** toString() 与 valueOf() **

调用数组的toString()方法会返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。而调用数组的valueOf()方法返回的还是数组。 例:

    var colors = ["red","blue","black"];
    colors.toString(); //"red,blue,black"
    colors.valueOf(); //["red", "blue", "black"] 
1
2
3

** join() **

数组继承的toString()、valueOf()方法,在默认情况下逗号以逗号分隔字符串的形式返回,而如果使用join()方法,则可以使用不同的分隔符来构建这个字符串。

    var colors = ["red","blue","black"];
    colors.join(","); //"red,blue,black"
    colors.join("|"); //"red|blue|black"
    colors.join("");//"redblueblack"
1
2
3
4

** push() 和 unshift() **

这两个方法的功能刚好相反。 push()方法可以接受任意数量的参数,把它们逐个添加到数组末尾,并返回新数组长度。

    var colors = ["red","blue","black"];
    colors.push("aaa","bbb"); //返回5
    alert(colors);  //["red", "blue", "black", "aaa", "bbb"]
1
2
3

unshift()方法可以接受任意数量的参数,把它们逐个添加到数组前端,并返回新数组长度。

    var colors = ["red","blue","black"];
    colors.push("aaa","bbb"); //返回5
    alert(colors);  //["aaa", "bbb","red", "blue", "black"]
1
2
3

** pop() 和 shift() **

这两个方法的功能也是相反的 pop()方法从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。

    var colors = ["red","blue","black"];
    colors.pop(); //返回 "black"
1
2

shift()方法从数组末尾移除第一项,减少数组的length值,然后返回移除的项。

    var colors = ["red","blue","black"];
    colors.pop(); //返回 "red"
1
2

我们可以结合push()和pop()方法,实现类似的LIFO(Last-in-First-out)后进先出。 也可以结合unshift()和shift()方法,实现类似队列的FIFO(First-in-First-out)先进先出。

** reverse() 与 sort() **

reverse()方法会反转数组项的顺序,返回经过排序后的数组。

    var colors = ["red","blue","black"];
    colors.reverse(); //返回["black", "blue", "red"]
1
2

sort()方法按升序排列数组项,但是由于它其实是先调用数组项的toString()方法,然后比较的是字符串,所以如果需要比较数字大小的时候,建议给其传一个比较函数。

    function compare(value1,value2){ //按升序
       return value1-value2;
    }
    var values = [0,1,33,12,4];
    values.sort(compare);// [0, 1, 4, 12, 33]
1
2
3
4
5

** slice() ** slice()方法能够给予当前数组中的一或多个项创建一个新数组。slice()方法可接受一或两个参数,即要返回项的起始和结束位置。 在只有一个参数的情况下,slice()方法返回从参数指定位置到当前数组末尾的所有项。 如果有两个参数,则返回起始和结束位置之间的项——但不包括结束位置的项。 注意,slice()方法不会影响原始数组。

    var colors = ["red","blue","black","green","white"];
    colors.slice(1); //["blue", "black", "green", "white"]
    colors.slice(1,4); //["blue", "black", "green"]
1
2
3