前言: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():從數組的末尾開始先前查找。