JavaScript中預先定義了許多數組方法,這些方法都被定義在了Array.prototype中,任何數組都可以使用這些方法。 下面將介紹一些比較常用的方法
加入和刪除
從數組頭部加入或者刪除 shift() unshift()
shift() 刪除數組頭部的元素并返回該元素
unshift() 可以接受多個參數,表明向數組頭部加入多個元素 。需要注意的是<em>unshift是一次性加入這些元素而并非依次加入</em>
var a=[1,2]; a.unshift(3,4); console.log (a) // [3,4,1,2] 而并不是 [4,3,1,2]
unshift 返回新數組的長度從數組尾部加入或者刪除 push() pop()
與shift() unshift ()方法類似
pop() 刪除尾部元素并返回該元素
push() 可以向數組尾部加入多個元素,并返回新的長度。通用方法splice()
splice() 方法可以在數組任意相同位置插入或者刪除元素。
splice 方法的第一個參數制定了插入或者刪除的位置 。如果該參數為負數 則表示相對于數組最后一個元素的位置。如果該參數大于長度,則會被設置為該數組的長度。
第二個參數表示需要刪除元素的個數,如果該參數被省略或者大于剩余的元素個數,則剩下的元素都會被刪除。
之后的參數表示需要被加入的元素。
splice 方法返回被刪除的元素組成的數組。如果沒有元素被刪除,則返回空數組。-
合并多個數組 cancat()
cancat() 方法依次連接 調用該方法本身的數組和每一個參數并返回新數組最為結果。有幾個需要注意的地方:- 如果任何一個參數是數組,該方法連接的是數組中的元素,而并非數組本身。 <em>該方法并不會遞歸扁平化數組中的數組元素!</em>
var a=[1,2]; var res=a.concat(3,[4,5],[[6,7],8]); console.log(res); // [1,2,3,4,5,[6,7],8]
- 如果任何一個參數是數組,該方法連接的是數組中的元素,而并非數組本身。 <em>該方法并不會遞歸扁平化數組中的數組元素!</em>
<em>該方法不會改變原有數組!</em>
還可以使用push方法合并兩個數組:
Array.prototype.push.apply(a,b);
合并后的數組將會存儲在a中,并不會產生一個新的數組。所以這種方法比上一種更節省內存。-
元素排序 sort()
js中的排序方法類似于其他語言,也可以接受一個比較函數作為參數。
function compareFunction(a,b){ //比較函數接受兩個參數,代表被比較的兩個元素。 if (希望a 在 b 前面) return -1; if (希望a 在 b 后面) return 1; if (a==b) return 0; }
需要注意的是,當沒有比較函數時,數組元素按照字符串排序規則來排序(unicode)。
var a=[2,1,10,21]; a.sort(); console.log(a); // [1,10,2,21] 而并非[1,2,10,21]
- <em>該方法會改變原有數組!</em>
-
倒序 reverse()
顧名思義,該方法會將數組中的元素顛倒順序。- <em>該方法會改變原有數組!</em>
元素拼接 join()
該方法將數組中的元素依次拼接成字符串。
join()方法接受一個可選參數,代表拼接的連接符。默認連接符是逗號','子數組 slice()
slice()方法用來獲取一個數組的子數組(部分數組)。
該方法接受兩個參數:起始位置 和 結束為止。該方法返回子數組。
需要有幾個注意的地方:如果沒有指定起始位置,默認從0開始
如果沒有指定結束位置, 默認到數組結尾。
不包含結束位置的元素
如果參數出現負數,同splice 一樣, 代表相對于尾元素的位置。
<em>該方法不會改變原有數組!</em>
var a=[1,2,3]; console.log(a.slice()); //[1,2,3] console.log(a.slice(1)); //[2,3] console.log(a.slice(0,1)); //[1] console.log(a.slice(-1)); // [3] console.log(a.slice(-2,-1)); //[2]
以上就是es3中定義的一些數組方法,下一節將會講解es5中新定義的一組方法。