JS引用類型之Array

ECMAScript中的數組能夠說是比較神奇了, ECMAScript中定義的數組每一項能夠保存不一樣的數據類型,如第一項爲字符串,第二項爲數值等等數組

 1. 那怎麼建立一個數組呢?瀏覽器

方法和建立對象實例相似框架

(1)經過new + 構造函數建立。此處的構造函數就是Array了函數

    即 var arr = new Array()spa

  也能夠傳遞參數 var arr = new Array(20) 則數組長度爲20對象

  或者傳遞字符串 var arr = new Array('a','b')此處建立了包含2個字符串值的數組ip

  使用Array 構造函數時也能夠省略new 操做符字符串

(2)用字面量形式建立數組構造函數

       var color = ['red', 'blue'];  //建立包含兩個字符串的數組數據類型

       var name = [];     //  建立空數組

       var arr = [1,2,];   // 建立包含兩項或三項的數組

       var p = [,,,,,];  //建立包含5/6項的數組

      前兩種好懂,解釋一下最後兩種

      爲何會有兩種可能,緣由是不一樣瀏覽器的理解不一樣,在IE8以前,會認爲第三種建立了 項爲1,2和undefined的數組 

   在其餘瀏覽器中,會認爲建立了1和2兩項

同理 ,最後一種也是這樣

    可是要注意了,省略值的每一項都會得到undefined值

2. 數組的length 可變

   如 var arr = [1,2]

  arr[2] = 3

  此處數組的長度爲2,而要訪問第三項,此處會默認爲數組添加一項,長度變爲3

  反之,若是將數組長度設置爲1

 arr.length =  1;

 則數組的最後一項會被刪除,再訪問arr[1]  輸出undefined

若arr.length = 4; 超出原來長度了,則多餘的項都會得到undefined值

 

3. 檢測數組

 如何檢測一個對象是否是數組呢?

if(value instanceof Array) {

    // 操做..

}

instanceof操做符的問題在於,它只有一個全局執行環境

若網頁中包含多個框架,則有多個不一樣全局執行環境

從而存在多個版本的Array構造函數

若是你從一個框架向另外一個框架傳遞數組,那麼傳入的數組和第二個框架原生的數組構造函數不同

 

爲了解決這個問題,ECMAScript 新增了Array.isArray()方法,目的是肯定這個值是否是數組,不限於執行環境

4.轉換方法

主要是數組轉爲字符串;若數組中值爲null或undefined ,轉換時返回空字符串

  一般能夠用toString()方法,返回每一個值的字符串形式用逗號拼接起來

  可是更經常使用的是join()方法

  接受一個參數,即用做分隔符的字符串;不傳遞參數默認爲逗號

  ['a','b','c'].join('+')  //返回 a+b+c

相關文章
相關標籤/搜索