JavaScript中預(yù)先定義了許多數(shù)組方法翘地,這些方法都被定義在了Array.prototype中申尤,任何數(shù)組都可以使用這些方法。 下面將介紹一些比較常用的方法
加入和刪除
從數(shù)組頭部加入或者刪除 shift() unshift()
shift() 刪除數(shù)組頭部的元素并返回該元素
unshift() 可以接受多個(gè)參數(shù)衙耕,表明向數(shù)組頭部加入多個(gè)元素 昧穿。需要注意的是<em>unshift是一次性加入這些元素而并非依次加入</em>
var a=[1,2]; a.unshift(3,4); console.log (a) // [3,4,1,2] 而并不是 [4,3,1,2]
unshift 返回新數(shù)組的長度從數(shù)組尾部加入或者刪除 push() pop()
與shift() unshift ()方法類似
pop() 刪除尾部元素并返回該元素
push() 可以向數(shù)組尾部加入多個(gè)元素,并返回新的長度橙喘。通用方法splice()
splice() 方法可以在數(shù)組任意相同位置插入或者刪除元素时鸵。
splice 方法的第一個(gè)參數(shù)制定了插入或者刪除的位置 。如果該參數(shù)為負(fù)數(shù) 則表示相對(duì)于數(shù)組最后一個(gè)元素的位置厅瞎。如果該參數(shù)大于長度饰潜,則會(huì)被設(shè)置為該數(shù)組的長度。
第二個(gè)參數(shù)表示需要?jiǎng)h除元素的個(gè)數(shù)磁奖,如果該參數(shù)被省略或者大于剩余的元素個(gè)數(shù)囊拜,則剩下的元素都會(huì)被刪除。
之后的參數(shù)表示需要被加入的元素比搭。
splice 方法返回被刪除的元素組成的數(shù)組冠跷。如果沒有元素被刪除南誊,則返回空數(shù)組。-
合并多個(gè)數(shù)組 cancat()
cancat() 方法依次連接 調(diào)用該方法本身的數(shù)組和每一個(gè)參數(shù)并返回新數(shù)組最為結(jié)果蜜托。有幾個(gè)需要注意的地方:- 如果任何一個(gè)參數(shù)是數(shù)組抄囚,該方法連接的是數(shù)組中的元素,而并非數(shù)組本身橄务。 <em>該方法并不會(huì)遞歸扁平化數(shù)組中的數(shù)組元素幔托!</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]
- 如果任何一個(gè)參數(shù)是數(shù)組抄囚,該方法連接的是數(shù)組中的元素,而并非數(shù)組本身橄务。 <em>該方法并不會(huì)遞歸扁平化數(shù)組中的數(shù)組元素幔托!</em>
<em>該方法不會(huì)改變原有數(shù)組!</em>
還可以使用push方法合并兩個(gè)數(shù)組:
Array.prototype.push.apply(a,b);
合并后的數(shù)組將會(huì)存儲(chǔ)在a中蜂挪,并不會(huì)產(chǎn)生一個(gè)新的數(shù)組重挑。所以這種方法比上一種更節(jié)省內(nèi)存。-
元素排序 sort()
js中的排序方法類似于其他語言棠涮,也可以接受一個(gè)比較函數(shù)作為參數(shù)谬哀。
function compareFunction(a,b){ //比較函數(shù)接受兩個(gè)參數(shù),代表被比較的兩個(gè)元素严肪。 if (希望a 在 b 前面) return -1; if (希望a 在 b 后面) return 1; if (a==b) return 0; }
需要注意的是史煎,當(dāng)沒有比較函數(shù)時(shí),數(shù)組元素按照字符串排序規(guī)則來排序(unicode)驳糯。
var a=[2,1,10,21]; a.sort(); console.log(a); // [1,10,2,21] 而并非[1,2,10,21]
- <em>該方法會(huì)改變原有數(shù)組篇梭!</em>
-
倒序 reverse()
顧名思義,該方法會(huì)將數(shù)組中的元素顛倒順序酝枢。- <em>該方法會(huì)改變原有數(shù)組恬偷!</em>
元素拼接 join()
該方法將數(shù)組中的元素依次拼接成字符串。
join()方法接受一個(gè)可選參數(shù)隧枫,代表拼接的連接符喉磁。默認(rèn)連接符是逗號(hào)','子數(shù)組 slice()
slice()方法用來獲取一個(gè)數(shù)組的子數(shù)組(部分?jǐn)?shù)組)。
該方法接受兩個(gè)參數(shù):起始位置 和 結(jié)束為止官脓。該方法返回子數(shù)組。
需要有幾個(gè)注意的地方:如果沒有指定起始位置涝焙,默認(rèn)從0開始
如果沒有指定結(jié)束位置卑笨, 默認(rèn)到數(shù)組結(jié)尾。
不包含結(jié)束位置的元素
如果參數(shù)出現(xiàn)負(fù)數(shù)仑撞,同splice 一樣赤兴, 代表相對(duì)于尾元素的位置。
<em>該方法不會(huì)改變原有數(shù)組隧哮!</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中定義的一些數(shù)組方法桶良,下一節(jié)將會(huì)講解es5中新定義的一組方法。