1. 程式人生 > >Array類型

Array類型

values 使用 new 超過 包括 cat 修改 改變 比較

Array類型

創建方法:

(1)構造函數法:

var color = new Array();          //創建一個空數組,省略new也是可以的,等價於new color = Array();
var color = new Array(20);      //創建一個length為20的數組
var color = new Array("red", "blue", "green");        //創建一個包含3個字符串的數組

(2) 數組字面量表示法(不會調用構造函數):

var color = ["red", "blue", "green"];     //創建一個包含3個字符串的數組
var color = [];            //創建一個空數組

數組中的值的訪問:

  方括號加索引值。索引值小於數組項數,返回對應項的值。索引超過數組現有項,數組會自動增加到該索引值加一的長度

var color = ["red", "blue", "green"];
alert(color[0]);            //顯示第一項
color[2] = "black";       //修改第三項
color[3] = "brown";    //新增第四項

length屬性

  length不是只讀,可通過其向數組添加或移除項。

var color = ["red", "blue", "green"];
color[length-1] = "black";               //在數組末尾添加“black”
color.length = 3;                            //數組長度變為3,black被移除
color.length = 4;                            //數組長度變為4,最後一項為undefined
alert(color[3]);                              //undefined

1 檢測數組

方法:

  • 對於一個全局作用域:使用instanceof操作符
    if (value instanceof Array) {
            doSomething();
    }
  • 網頁包含多個框架,含有兩個以上全局作用域,使用Array.isArray()函數
    if (Array.isArray(value)) {
            doSomething();
    }

2 轉換方法

  • toSting() : 對數組每一項都元素調用toString()方法,返回一個以逗號分隔的字符串
  • toLocaleString():對數組每一項都元素調用toLocaleString()方法,返回一個以逗號分隔的字符串
  • valueOf():返回的還是數組
  • join():可以指定分隔符來返回數組的字符串。
    alert(color.join(","));        //red, green, blue
    alert(color.join("||"));       //red||green||blue

3 棧方法

  • push(value):把一個元素添加到數組的末尾;
  • pop(value):從數組末尾刪除並返回一個元素

4 隊列方法

  • shift():移除數組第一項元素並返回,結合push()方法可以像隊列一樣使用數組;
  • unshift():在數組前端添加任意項並返回數組的新長度,結合pop()方法從反方向模擬隊列(在數組前端添加,後端移除)

註意:在IE7及更早版本,unshift()總返回undefined而不是數組長度!!!!!!!

5 重排序方法

  • reverse() :將數組反轉
  • sort():默認情況下按升序排列數組,對數組中每一項調用toString(),然後比較字符串。可向其傳遞一個函數參數,來改變指定比較的方法。
 1 function compare(value1, value2) {
 2     if (value1 < value2) {
 3              return -1;
 4     }
 5     if (value1 > value2) {
 6             return 1;
 7     } else {
 8             return 0;
 9     }
10 }
11 
12 var value = [1, 5, 3, 6, 4, 2];
13 value.sort(compare);
14 alert(value);            //1, 2, 3, 4, 5, 6

6 操作方法

  • concat():創建當前數組的一個副本,若傳遞了參數,則把參數中的值追加到數組後面。
  • slice():
    slice(x);        //返回x到數組末尾的所有項
    slice(x, y);    //返回x到y之間但不包括y的所有項

  • splice():始終返回一個數組,內容是從原是數組刪除的項。若沒有刪除項,則返回的是空數組。
    • 刪除:指定兩個參數,要刪除的第一項的位置和要刪除的項數。如:splice(0, 2)刪除數組的前兩項
    • 插入:提供三個或以上參數:起始位置,0(要刪除的項)和要插入的項
    • 替換:提供三個或以上參數:起始位置,要刪除的項,要插入的項。

7 位置方法

  • indexOf():接受兩個參數,要查找的項和表示查找起點位置的索引(從前往後找)
  • lastIndexOf():接受兩個參數,要查找的項和表示查找起點位置的索引(從後往前找)

都返回查找項在數組中的索引位置,沒有找到返回-1。

2.8 叠代方法

  • every():對數組中每一項運行給定函數,對每一項都返回true則返回true;
  • filter():對數組中每一項運行給定函數,返回該函數會返回true的項組成的數組;
  • forEach():對數組中每一項運行給定函數。沒有返回值;
  • map():對數組中每一項運行給定函數,返回每次函數調用的結果組成的數組;
  • some():對數組中每一項運行給定函數,對仁一項返回true則返回true。

以上方法都不會修改原數組中的值。

傳入這些方法中的函數會接受三個參數:數組項的值,該項在數組中的位置和數組對象本身。如:

var numbers = [1, 2, 3, 4, 3, 2, 1];
ver everyResult = numbers.every(function(item, index, array){
        reutnr (item > 2);
});

8 縮小方法

  • reduce():從數組的第一項開始,逐個遍歷到最後
  • reduceRight():從數組最後一項開始,向前遍歷到第一項

兩個方法都接受兩個參數:一個在每一項上調用的函數和(可選的)作為縮小基礎的初始值。傳給它們的函數接受4個參數:前一個值,當前值,項的索引和數組對象這個函數返回的任何值都會作為第一個參數自動傳遞給下一項。如:

var values = [1, 2, 3, 4, 5];
var sum = values.reduce(function(pre, cur, index, array){
    return prev + cur;
});
alert(sum);        //15

Array類型