標籤:var == developer 編號 mozilla src 過程 用法 常用
JavaScript中的Array
今天較全面地學習到了JS中的Array,也就是數組。寫博文一篇來總結一下學習和使用過程中關於Array中的一些誤區和常用API,加深一下印象。
關於Array最全面的API在此,MDN
阮一峰阮老師的Array教程
Array的定義
來自MDN的定義:
JavaScript的Array對象是用於構造數組的全域對象,數組是類似於列表的高階對象
來自阮一峰老師教程的定義:
數組(array)是按次序排列的一組值。每個值的位置都有編號(從0開始),整個數組用方括弧表示。
首先,數組是 對象,其次,他 按次序排列
那麼數組和對象的區別在哪裡呢?
我們先來看一下這段代碼:
我們分別聲明了一個數組和對象,我們可以看到:arr === obj 的結果為false,而且他們對應的建構函式也不同。
數組arr的建構函式是Array,而obj對應的建構函式Object,這就是他們最本質的區別。
因此,我們也可以說,數組是一個擁有特殊原型鏈的對象。
Array的聲明
var arr = [1,2,3]arr //[1,2,3]
這樣我們就建立了一個length為3的數組。
var arr = new Array(1,2,3)arr //[1,2,3]
值得注意的是,當我們使用建構函式聲明一個數組時,應該注意,不同的參數,會導致它的行為不一致。
var arr = new Array(3)arr //[empty × 3]var arr = new Array(3,3)arr //[3, 3]
因此,我們在聲明一個數組時,不建議使用建構函式產生新數組,直接使用數組字面量是更好的做法。
偽數組
如果一個對象的所有鍵名都是正整數或零,並且有length屬性,那麼這個對象就很像數組,文法上稱為“類似數組的對象”
比如前文提到的:
var arr = { ‘0‘:1, ‘2‘:2, ‘3‘:3}
-
如何判斷數組是不是偽數組
- 很簡單,這要這個數組的建構函式的原型是Array,他就是真數組;如果他的建構函式的原型是Object,他就是偽數組。
// 真數組arr.__proto__ === Array.prototype //true// 偽數組arr.__proto__ === Object.prototype //true
- Array.isArray()
Array.isArray方法返回一個布爾值,表示參數是否為數組。它可以彌補typeof運算子的不足。
var arr = [1, 2, 3];typeof arr // "object"Array.isArray(arr) // true
Array常用API
阮一峰老師的教程中有很詳細的用法講解,全盤照抄沒有意思,重要的是理解,如果實在不記得直接去查詢就可以了。
- push()
- pop()
- shift()
- unshift()
- forEach()
- sort()
- join()
- concat()
- map()
- filter()
- reduce
[JavaScript]JavaScript中的Array