淺談 JavaScript 中 Array 類型的方法使用

前言:Array 類型是 JavaScript 中除了 Object 類型之外最經常使用的類型。前端

 

1、建立數組數組

JavaScript 中的數組與其餘語言中的數組有着很大的區別。例如Java、PHP等語言中的數組都是一組有序的數據,而 JS 中的數組能夠包含多種類型的數據。數據結構

建立方式:框架

  1. Array 構造函數定義數組 ---------- var 數組名 = new Array();函數

var colors = new Array(20);   //直接傳遞數組數量,length 值爲20,即建立一個包含20項的數組。

var colors = new Array("red","blue","green"); //傳遞數組中包含的項,即建立一個包含3個字符串的數組。

var
colors = Array(20); //也能夠省略 new 操做符,結果相同。

  2. 字面量方式定義數組 ---------- var 數組名 =  [ ];spa

var values = [];  //定義了一個空數組
var values = [1,2,3] //定義了一個包含3項的數組

JS 中的數組能夠隨着數據的增長調整大小,例如:code

var colors = ["blue","green","black"];        //建立一個包含三個字符串的數組
colors[colors.length] = "brown"; //(在位置3)添加一個字符串

colors[99] = "red"; //(在位置99)添加一個字符串 ,但位置4到98之間其實是不存在,返回的都是undefined
console.log(colors.length); //100

 

2、檢測數組對象

自從 ECMAscript3 作出規定後,就出現了一個經典問題 ------- 確立某個對象是否是數組。blog

1. 對於一個網頁或者一個全局做用域內,使用 instanceof 操做符。排序

* 但若是網頁中包含多個框架,那麼就存在兩個或以上不一樣的全局執行環境,這種方法就不適用。

2.判斷某個值是否是數組,不考慮是在哪一個全局做用域內建立的,使用 Array.isArray() 方法。

 

3、轉換方法

全部對象都有 toString() 方法、toLocalString()方法、valueOf()方法。

  toString() :將數組中的值轉換成用逗號分隔的字符串。

  toLocalString():將數組中的值轉換成本地數組。

  valueOf():返回數組的原始值。

 

4、棧方法

JS 的數組中也提供了一種讓數組的行爲相似於其餘數據結構的方法,也就是數組能夠表現的像棧同樣。

 棧是一種LIFO(後進先出)的數據結構,能夠限制數據的插入和移除。而數據的插入和移除都發生在棧的頂部。  

ECMAscript 爲數組提供了 push()和 pop()方法。

push() 方法能夠接受任意數量的參數,並將他們添加至數組的末尾,並返回修改後的數組長度。

pop() 方法能夠從數組的末尾移除一項,減小 length 值,並返回移除的項。

 

5、隊列方法

隊列數據結構的訪問規則是 FIFO(先進先出),隊列在列表的末端添加項,在列表的前端移除項。

因爲 push()方法是從數據的末端添加項,所以只需一個從數據的前端取得項的方法便可,而實現這一操做的方法就是shift()方法。

此外,還有一種方法 unshift(),是從數組的前端添加項並返回新數組的長度。

unshift()和 pop()方法同時使用,能夠從相反的方向模擬隊列,即從數組的前端添加項,從數組的末端移除項。

 

6、 重排序方法

顧名思義,就是對數組進行從新排序,且數組中已經存在這樣的兩個方法,即 reverse()方法和 sort()方法。

reverse()方法是直接反轉數組的順序,但始終是不太靈活的。

sort()方法則會調用每一個數組項的 toString()轉換方法,比較轉換來的字符串進行排序,但也不是最佳方案,好比轉換成字符串的「5」就比「10」大,也不符合常理。

以上方法單獨使用都不是最優解,所以能夠用 sort()方法接收一個比較函數作爲參數,以便於指定哪一個值在前哪一個值在後。

 

7、操做方法

ECMAscript 爲數組中已存在的項提供了很對操做方法。

1. contact():爲當前數組建立一個副本。若是給 contact 方法傳遞參數,將接收到的參數添加至數組的末尾,最後返回一個新數組。(原來的數組保持不變)

                    若是沒有傳遞參數,則只複製數組並返回副本。

2. slice():基於當前數組的一項或多項建立一個新數組。語法:slice(返回項起始位置項,結束位置(但不包含結束位置的項));若是隻有一個參數,則返回該項到數組末尾的全部項。(原數組不變)

      !!!若是傳入的參數中有一個負數,則用數組長度加上該數來肯定相應的位置;若是結束位置小於起始位置,則返回空數組。

3. splice():在數組的中部插入項。

       • 刪除:刪除任意數量的數 ------ 數組名.splice(刪除的起始項的索引位置,要刪除的項數)

       • 插入:從指定位置插入項 ------ 數組名.splice(起始索引位置,0(要刪除的項數),要插入的項)

       • 替換:從指定位置插入項 ------ 數組名.splice(起始索引位置,要刪除的項數,要插入的項)

 

8、位置方法

用於返回要查找的項在數組中的位置,或者在沒找到的狀況下返回-1。

indexof():從數組的開頭(位置0)向後查找。

lastIndexOf():從數組的末尾開始先前查找。

相關文章
相關標籤/搜索