ECMAScript引用類型之Array類型

Javascript引用類型-Array

創建Array數組

var colors = new Array(); //注意大小寫

var colors = new Array(20); //創建長度20的數組

var colors = new Array("red","blue","green");//創建包含3個字符串的數組

var colors = new Array('3'); //包含要給字符的數組(注意和第二項的區別)

var colors = ["red","blue","3"]; 

var colors = []; //空數組

//最好不要這樣創建
var colors = [1,2,]; //2或3項的數組(根據瀏覽器決定)
var colros = [,,,,,] //5或6項的數組

檢測是否爲數組

//方法一
if(value instanceof Array){}
//方法二
Array.isArray(value);

兩者區別

方法一在多個不同的全局執行環境中會出問題。

數組轉換方法

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

棧方法

  • 棧特點:LIFO(先進後出)
  • 入棧:push()
  • 出棧:pop()
var colors = new Array();
var count = colors.push("red","blue");
alert(count); //2

var item = colors.pop();
alert(item); //blue
alert(colors.length) //1

隊方法

  • 隊特點:FIFO(先進先出)
  • 入隊:unshift()
  • 出隊:shift()
var colors = new Array("red","blue","green");
var item = colors.shift();
alert(item); //red
alert(colors.length); //2

重排序方法

  • reverse()反轉數組
  • sort(function)排序數組,如果不給function參數,則會調用默認的toString()方法,然後根據ASCLL比較大小
function compare(value1,value2){
    if(value1 > value2){
        return -1;  //負數表示第一個參數位於第二參數之前
    }else if(value1 < value2){
        return 1;   //負數表示第一個參數位於第二參數之後
    }else{
        return 0;   //相等就用0表示
    }   
}

var values = [1,2,3,4];
values.sort(compare);
alert(values);  //4,3,2,1

操作方法

深度複製一個數組(創建數組的副本)

var colors = new Array("red","blue","green");

var colors2 = colors.concat("yellow",["1","2"]);
alert(colors); //red,blue,green
alert(colors2);//red,blue,green,yellow,1,2

slice()截取數組

var colors = ["red","blue","green","yellow","purple"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);
alert(colors2); //blue,green,yellow,purple
alert(colors3); //blue,green,yellow"

splice()增刪查改數組

  • 刪除
    splice(0,2) 刪除數組前兩項
  • 插入
    splice(2,0,”red”,”green”) 從當前數組的位置2開始插入字符串
  • 替換
    splice(2,1,”red”,”green”) 刪除位置2的項,然後開始插入字符串

位置方法

  • indexOf()
  • lastIndexOf();

迭代方法

every()方法和some()方法

var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item,index,array){
    return (item > 2);
}); //是否全部大於2,是就放回true,否則false
alert(everyResult) //false

var someResult = numbers.some(function(item,index,array){
    return (item > 2);
}); //是存在大於2的數,是就放回true,否則false
alert(someResult) //true

filter()方法

var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item,index,array){
    return (item > 2);
}); //大於2,就放回item
alert(filterResult) //[3,4,5,4,3]

map()方法

var numbers = [1,2,3,4];
var mapResult = numbers.map(function(item,index,array){
    return (item * 2);
}); //每一項都放回item*2
alert(mapResult) //[2,4,6,8]

forEach()方法

var numbers = [1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item,index,array){
    //執行某些操作
})

歸併方法

reduce()從第一項開始

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,array){
    return prev+cur;
});
alert(sum); //15
  • 說明:
    prev 表示前一個值(也就是上次執行的返回值prev+cur)
    cur 表示當前值(可選,也就是該索引下數組的值)
    index 項的索引
    array 數組對象

reduceRight()從最後一項開始

//代碼略
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章