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