Javascript引用类型之Array类型(二)

来源:互联网 发布:软件母版 编辑:程序博客网 时间:2024/05/16 17:37

这篇文章中主要来归纳整理一下常用的数组操作方法。

一、转换方法

var colors = ["red", "blue", "green"];alert(colors.toString());       //red, blue, greenalert(colors.valueOf());        //red, blue, greenalert(colors);                  //red, blue, green

如果不想用逗号分隔的字符串来返回数组项的话,则可以使用 join() 方法。join() 方法接收一个参数,即用作分隔符的字符串,然后返回包含所有数组项的字符串。如下:

var colors = ["red","green","blue"];alert(colors.join("||"))        //red || green || bluealert(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);       //2count = colors.push("black");alert(count);       //3var item = colors.pop();        //blackalert(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;}

五、操作方法

  1. 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。

0 0