1. 程式人生 > >5.2 Array 類型

5.2 Array 類型

tro body cnblogs 之前 width color ring 多個 asc

數組 length 屬性的特點

數組的 length 屬性很有特點 — 它不是只讀的。因此通過設置這個屬性,可以從數組的末尾移除或向數組添加新項

技術分享圖片

檢測數組

JavaScript為啥不用 instanceof 檢測數組,這裏有個示例坑

對於一個網頁,或者一個全局作用域而言,使用 instanceof 操作符就能得到滿意的結果:

if( value instanceof Array ) {

  //  對數組執行某些操作

}

instanceof 操作符的問題在於,它假定單一的全局執行環境。如果網頁中包含多個框架,那實際上就存在兩個以上不同的全局執行環境,從而存在兩個以上不同版本的 Array 構造函數。如果你從一個框架向另一個框架傳入一個數組,那麽傳入的數組與在第二個框架中原生創建的數組分別具有各自不同的構造函數。

為了解決這個問題,es6新增了 Array.isArray() 方法,這個方法的目的是最終確定某個值到底是不是數組,而不管它是在哪個全局執行環境中創建的。

數組的 sort 方法

為了實現排序,sort() 方法會調用每個數組項的 toString() 轉型方法,然後比較得到的字符串,以確定如何排序。即使數組中的每一項都是數值,sort() 方法比較的也是字符串。

技術分享圖片

因此 sort() 方法可以接收一個比較函數作為參數,以便我們指定哪個值位於哪個值的前面。比較函數接收兩個參數,如果第一個參數應該位於第二個之前則返回一個負數,如果兩個參數相等則返回0,如果第一個參數應該位於第二個之後則返回一個正數。

技術分享圖片

對於數值類型或者其 valueOf() 方法會返回數值類型的對象類型,可以使用一個更簡單的比較函數。由於比較函數是通過返回一個小於0、等於0或大於0的值來影響排序結果,因此減法操作就可以適當地處理所有這些情況。

技術分享圖片

5.2 Array 類型