Array

js的array與其他語言最大的區別就是Array可以保存任何類型的數據。
可以這樣創建一個array

var arr = new Array(5);//創建一個length爲5的Array。
var arr = [];//創建一個空Array

/*可以這樣做*/
arr.length = 3;//從arr的末尾移除項或添加項。

/*可以很方便的利用length在數組末尾添加項*/
arr[arr.length] = "a";

檢測數組

對於一個全局作用域,可以用instanceof檢測數組。

val instanceof Array;//true/false

如果一個項目擁有多個不同的全局執行環境

Array.isArray(val);//ie9+ Firefox4+ Safari5+ Opera10.5+ Chrome

轉換字符串方法

toString() valueOf() toLocaleString()
//不同之處在於toString,valueOf實際調用的都是每項的valueOf方法。toLocaleString調用的是每項的toLocaleString方法。
var arr = ['1','2','3'];
arr.toString();//1,2,3
arr.valueOf();//1,2,3
arr.toLocaleString();//1,2,3

數組方法

//分割成字符串
var arr = ['1','2','3'];
arr.join(',');//1,2,3
//棧行爲方法LIFO
var arr = ['1','2','3'];
arr.push('4');//返回長度4,此時數組爲['1','2','3''4']
arr.pop();//返回最後一項'4',此時數組爲['1','2','3']
//隊列方法FIFO
var arr = ['1','2','3'];
arr.shift();//返回第一項'1',此時數組爲['2''3']
arr.unshift('1');返回數組長度3,此時數組爲['1','2','3'];
//重排序方法sort() reverse()
var arr = ['12','1','3','54'];
arr.reverse();//['54','3','1','12'];
//sort()函數則比較特殊。它是根據字符串的大小來排序,所以一般採用的時候將一個比較函數作爲參數。
function compare(val1, val2){
   if(val1 < val2){
        return -1;
     }else if(val1 > val2){
        return 1; 
     }else{
        return 0;
     }
}
arr.sort(compare);//['1','3','12','54']
//如果對於數值(valueOf爲數值)
function compare(val1 , val2){
     return val1 - val2;
}
//操作方法
var arr1 = ['1','2'];
var arr2 = ['3','4'];
arr1.concat(arr2);//['1','2','3','4'] .concat會創建一個副本,不會修改原數組
//數組淺複製(拷貝)
var arr = ['1','2','3'];
arr.slice(1);//['2','3']
arr.slice(1,2);//['2']
arr.slice(-1);['3'] 數組長度-1
arr.slice(-2,-1);['2']相當於slice(1,2)
//位置方法
indexOf() lastIndexOf()
var arr = [1,2,3,4,5,4,6,7,8];
arr.indexOf(4);//3
arr.lastIndexOf(4);//5
arr.indexOf(4,4);//5
arr.indexOf(11);//-1

splice

主要用途是向數組中插入項,返回值爲刪除的數組。並且改變原數組。

//刪除
splice(0,2)//要刪除的第一項,項數
//插入
splice(2,0,'red','yelow');//起始位置,要刪除的項數,要插入的項
//替換
splice(2,1,'red','yellow');//起始位置,要刪除的項數,要插入的項

迭代方法

var nums = [1,2,3,4,5,6,4,3];
var everyRes = nums.every(function(item , index , array){
    return item > 2;
});//false 此處如果爲some 返回true
var filterRes = nums.filter(function(item , index , array){
    return item > 2;
});//[3,4,5,6,4,3]

var nums = [3,4,21,4,4,5];
var mapRes = nums.map(function(item , index , array){
    return item+1;
});//[4,5,22,5,5,6]
forEach()//數組迭代
//ie 9+ firefox 2+ safari 3+ opera 9.5+ chrome
var nums = [30 , 3 , 2 , 5];
var a = nums.reduce(function(pre , cur , index , arr){
  return pre / cur;
});//1 reduceRight()方法從後向前計算
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章