設置或返回 數組中元素的數目。數組
注意:設置 length 屬性可改變數組的大小。若是設置的值比其當前值小,數組將被截斷,其尾部的元素將丟失。若是設置的值比它的當前值大,數組將增大,新的元素被添加到數組的尾部,它們的值爲 undefined。因此length不必定表明數組的元素個數。瀏覽器
concat() 方法用於鏈接兩個或多個數組。該方法不會改變現有的數組,而僅僅會返回被鏈接數組的一個副本。app
arrayObject.concat(arrayX, arrayX, …… arrayX)jsp
注意:參數是必需的。能夠是具體的值,也能夠是數組對象,能夠是任意多個。返回一個新的數組(該數組是經過把全部 arrayX 參數添加到 arrayObject 中生成的,若是arrayX是元素,則添加arrayX,若是arrayX是數組,則添加arrayX中的元素)。函數
join() 方法用於把數組中的全部元素放入一個字符串。元素是經過指定的分隔符進行分隔的。oop
arrayObject.join(separator)優化
參數表明分隔符,是可選的,默認爲半角逗號。注意返回值是字符串,不是數組。編碼
var arr = new Array(3) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" console.log(arr); //["George", "John", "Thomas"] console.log(arr.join()); //"George,John,Thomas" console.log(arr.join(" & ")); //"George & John & Thomas"
如今的新主流瀏覽器,都對 + 運算符作了很好的優化,因此建議使用 + 運算符代替join()方法, 參考 array join vs string connectspa
pop() 方法用於刪除並返回數組的最後一個元素。prototype
pop() 方法將改變數組(刪除數組的最後一個元素,把數組長度減 1),而且返回它刪除的元素的值。若是數組已經爲空,則 pop() 不改變數組,並返回 undefined 值。
var arr = new Array(3) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" console.log(arr); //["George", "John", "Thomas"] console.log(arr.pop()); //"Thomas" console.log(arr); //["George", "John"] console.log(arr.pop()); //"John" console.log(arr); //["George"] console.log(arr.pop()); //"George" console.log(arr); //[] console.log(arr.pop()); //undefined console.log(arr); //[]
push() 方法可向數組的末尾添加一個或多個元素,並返回新的長度,也就是添加元素後的數組長度。
arrayObject.push(newelement1, newelement2, …., newelementX)
push()方法最少要有一個參數。push() 方法可把它的參數順序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是建立一個新的數組。push() 方法和 pop() 方法使用數組提供的先進後出棧的功能。
注意:push()方法中的參數無論是什麼類型(數組、對象等),一個參數將會被做爲一個總體元素插入 arrayObject 的尾部,不作拆分,詳見示例。
var a = ["a","b"]; var b = { name: "Tom" }; var c = [1,2,3]; console.log(a); console.log(a.push(b)); console.log(a); console.log(a.push(c)); console.log(a); /********* Output *********/ ["a", "b"] 3 ["a", "b", [object Object] { name: "Tom" }] 4 ["a", "b", [object Object] { name: "Tom" }, [1, 2, 3]]
reverse() 方法用於顛倒數組中元素的順序。
注意:該方法會改變原來的數組,而不會建立新的數組。
reverse()是sort()的逆序版,reverse()的詳細排序行爲請參見下文 sort() 方法的解釋。
reverse()並不是效率最高的數組倒序排列方法,若是你對效率要求更高,能夠參考 JS: Array.reverse() vs. for and while loops
var a = ["a","b","c"]; var b = ["你","我","他"]; var c = [1,2,3]; var d = ["a","b","c",1,2,3,"你","我","他"]; console.log(a.reverse()); //["c", "b", "a"] console.log(b.reverse()); //["他", "我", "你"] console.log(c.reverse()); //[3, 2, 1] console.log(d.reverse()); //["他", "我", "你", 3, 2, 1, "c", "b", "a"]
shift() 方法用於把數組的第一個元素從其中刪除,並返回第一個元素的值。
若是數組是空的,那麼 shift() 方法將不進行任何操做,返回 undefined 值。請注意,該方法不建立新數組,而是直接修改原有的數組。
shift() 方法一般比 pop() 方法要慢不少。
var arr = new Array(3) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" console.log(arr); //["George", "John", "Thomas"] console.log(arr.shift()); //"George" console.log(arr); //["John", "Thomas"] console.log(arr.shift()); //"John" console.log(arr); //["Thomas"] console.log(arr.shift()); //"Thomas" console.log(arr); //[] console.log(arr.shift()); //undefined
slice() 方法可從已有的數組中返回選定的元素。
arrayObject.slice(start, end)
參數start是必需的,規定從何處開始選取,若是是負數,那麼它規定從數組尾部開始算起的位置。也就是說,-1 指最後一個元素,-2 指倒數第二個元素,以此類推。
參數end是可選的,規定從何處結束選取,該參數是數組片段結束處的數組下標。若是沒有指定該參數,那麼切分的數組包含從 start 到數組結束的全部元素。若是這個參數是負數,那麼它規定的是從數組尾部開始算起的元素。
注意,該方法並不會修改數組,方法會返回一個新的數組,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素。
請注意slice()和splice()的區別:slice意思是切片,即把數組切出來一段;splice意思是絞接,就像咱們平時接兩根繩子同樣,須要把原來的繩子切下來一段,而後再和新繩子接在一塊兒。若是想刪除數組中的一段元素,並向數組添加新元素,應該使用方法 Array.splice()。
在使用slice()時,若是參數start超過了數組的起點,則會從數組頭部開始;若是參數end超過了數組的結尾,則會從數組的尾部結束;若是 start和end中的範圍不在數組中,或者end小於start,則會返回空數組;若是start和end不爲數字,則會進行轉換,轉換失敗的 話,start默認爲0,end默認爲0。詳見示例:
var arr = new Array(6); arr[0] = "George"; arr[1] = "John"; arr[2] = "Thomas"; arr[3] = "James"; arr[4] = "Adrew"; arr[5] = "Martin"; console.log(arr); //["George", "John", "Thomas", "James", "Adrew", "Martin"] console.log(arr.slice(2,4)); //["Thomas", "James"] console.log(arr.slice(-3,4)); //["James"] console.log(arr.slice(-10,4)); //["George", "John", "Thomas", "James"] console.log(arr.slice(-10,-4)); //["George", "John"] console.log(arr.slice(4,3)); //[] console.log(arr.slice(-20,-10)); //[] console.log(arr.slice("2","4")); //["Thomas", "James"] console.log(arr.slice("a","4")); //["George", "John", "Thomas", "James"] console.log(arr.slice("a","b")); //[] console.log(arr.slice("2a","4a"));//[] console.log(arr.slice("","")); //[]
sort() 方法用於對數組的元素進行排序(從小到大)。
arrayObject.sort(sortby)
請注意,數組在原數組上進行排序,不生成副本。參數sortby是可選的,是自定義的函數,規定排序方法。
若是調用該方法時沒有使用參數,將按字母順序對數組中的元素進行排序,說得更精確點,是按照字符編碼的順序進行排序。要實現這一點,首先應把數組的元素都轉換成字符串(若有必要),以便進行比較。
若是想按照其餘標準進行排序,就須要提供比較函數,該函數要比較兩個值,而後返回一個用於說明這兩個值的相對順序的數字。比較函數應該具備兩個參數 a 和 b,其返回值以下:
var arr = new Array(6); arr[0] = "10"; arr[1] = "5"; arr[2] = "40"; arr[3] = "25"; arr[4] = "1000"; arr[5] = "1"; function sortNumber(a,b) { return a - b; } console.log(arr); //["10", "5", "40", "25", "1000", "1"] console.log(arr.sort()); //["1", "10", "1000", "25", "40", "5"] console.log(arr.sort(sortNumber)); //["1", "5", "10", "25", "40", "1000"]
splice() 方法用於插入、刪除或替換數組的元素。
arrayObject.splice(index, howmany, element1, ….., elementX)
參數index是必需的。規定從何處添加/刪除元素,該參數是開始(包含)插入和(或)刪除的數組元素的下標,必須是數字。
參數howmany是必需的。規定應該刪除多少元素。必須是數字,但能夠是 「0″。若是未規定此參數,則刪除從 index 開始到原數組結尾的全部元素。
參數element1…elementX是可選的。規定要添加到數組的新元素,從 index 所指的下標處開始插入。
splice() 方法可刪除從 index 處開始的零個或多個元素,而且用參數列表中聲明的一個或多個值來替換那些被刪除的元素。若是從 arrayObject 中刪除了元素,則返回的是含有被刪除的元素的數組。splice()會直接對原數組進行修改。
注意若是參數index不爲數字,則會自動轉換,詳見示例:
var arr = new Array(6); arr[0] = "George"; arr[1] = "John"; arr[2] = "Thomas"; arr[3] = "James"; arr[4] = "Adrew"; arr[5] = "Martin"; console.log(arr); //["George", "John", "Thomas", "James", "Adrew", "Martin"] console.log(arr.splice(2,1)); //["Thomas"] console.log(arr); //["George", "John", "James", "Adrew", "Martin"] console.log(arr.splice(2,2,"William")); //["James", "Adrew"] console.log(arr); //["George", "John", "William", "Martin"] console.log(arr.splice(2,1,"Tom","Jerry")); //["William"] console.log(arr); //["George", "John", "Tom", "Jerry", "Martin"] console.log(arr.splice(2)); //["Tom", "Jerry", "Martin"] console.log(arr); //["George", "John"] console.log(arr.splice("2")); //[] console.log(arr); //["George", "John"] console.log(arr.splice("a")); //["George", "John"] console.log(arr); //[]
注意若是index爲負數,則會從數組尾部算起;howmany爲負數,則不刪除。詳見示例:
var arr = new Array(6); arr[0] = "George"; arr[1] = "John"; arr[2] = "Thomas"; arr[3] = "James"; arr[4] = "Adrew"; arr[5] = "Martin"; console.log(arr); //["George", "John", "Thomas", "James", "Adrew", "Martin"] console.log(arr.splice(-2,1)); //["Adrew"] console.log(arr); //["George", "John", "Thomas", "James", "Martin"] console.log(arr.splice(-2,-1)); //[] console.log(arr); //["George", "John", "Thomas", "James", "Martin"]
對於大型數組,splice()的效率會比較低,參考 Splicing a single value
toString() 方法可把數組轉換爲字符串,並返回結果。
Array.toString() 至關於 Array.join() ,返回值與沒有參數的 join() 方法返回的字符串相同。
unshift() 方法可向數組的開頭添加一個或更多元素,並返回新的長度。
arrayObject.unshift(newelement1, newelement2, …., newelementX)
參數newelement1……X至少要有一個。unshift() 方法將把它的參數插入 arrayObject 的頭部,並將已經存在的元素順次地移到較高的下標處,以便留出空間。該方法的第一個參數將成爲數組的新元素 0,若是還有第二個參數,它將成爲新的元素 1,以此類推。
注意,unshift() 方法不建立新的數組,而是直接修改原有的數組。在IE6與IE7中,unshift()會返回 underfined!
改變原數組的方法:pop() 、push()、reverse()、shift()、sort()、splice()、unshift()
不改變原數組的方法:concat()、join()、slice()、toString()
注意:JavaScript裏面,沒有好的機制來區別Array和Object,通常能夠經過下面的方法來識別數組:
var isArray = function(value){ return Object.prototype.toString.apply(value) === '[object Array]'; }
Object.prototype.toString對任何變量會永遠返回這樣一個字符串」[object, class]「,而這個class就是JavaScript內嵌對象的構造函數的名字。至於用戶自定義的變量,則class等於object。所以經過 Object.prototype.toString.apply(obj)能夠準確的獲取變量數據類型。經過 Object.prototype.toString能夠得到的數據類型包 括:Date,Object,String,Number,Boolean,Regexp,Function,undefined,null,Math 等。
一些JavaScript新版本的方法,在這裏就不一一介紹了,能夠參考 MDN。
本文章中的控制檯輸出使用的 jsbin,調試環境不一樣,輸出結果的顯示形式可能有所不一樣。