JavaScript中的陣列物件自帶了一些方法,可以透過使用這些方法來對陣列進行操作。
join()
可以使用join()方法將陣列中的成員合併到一個字串中:
var o = [1,2,3];
console.log(o.join());//1,2,3
console.log(o.join(" "));//1 2 3
var emptyArray = new Array(10);
console.log(emptyArray.join("-"));//----------
從上面的範例可以看到,如果join()方法不帶參數,那麼JavaScript就會用逗號作為分隔符號將所有的成員合併到一個字串中;如果join()方法接受參數,那麼這個參數會作為分隔符號來使用。
reverse()
可以使用reverse()方法將陣列中的成員順序進行顛倒:
//reverse()
o.reverse();
console.log(o);//[3,2,1]
可以看到,呼叫reverse()語句後,陣列本身將會改變。
執行reverse()語句的回傳結果為改變後的陣列物件。
sort()
可以使用sort()方法對陣列中的成員進行排序(預設以字母順序排列)。與reverse()語句一樣,sort()語句會對陣列本身進行修改並傳回修改後的陣列物件:
var a = ["Phone", "Mobile",,,"Canon"];
a.sort();
console.log(a);//["Canon", "Mobile", "Phone", undefined, undefined]
var b = [33,44,111];
console.log(b.sort());//[111, 33, 44]
console.log(b.sort(function(a,b){return a-b}));//[33, 44, 111]
可以看到,sort()語句也接受一個function作為參數來實作自訂排序。
concat()
可以使用concat()方法對陣列進行拼接:
var c = [1,2,3];
console.log(c.concat(4));//[1, 2, 3, 4]
console.log(c.concat(5,6));//[1, 2, 3, 5, 6]
console.log(c.concat([7,8]));//[1, 2, 3, 7, 8]
console.log(c.concat([9,10], [11,12]));//[1, 2, 3, 9, 10, 11, 12]
console.log(c.concat([42,43,[44,45]]));//[1, 2, 3, 42, 43, [44, 45]]
console.log(c);//[1, 2, 3]
可以看到,與reverse()和sort()不同,concat()語句只是傳回拼接後的結果而已,對陣列本身不會產生任何修改。
slice()
可以使用slice()語句來取得數組中的子數組(sub-array):
var d = [1,2,3,4,5,6];
console.log(d.slice(0,3));//[1,2,3]
console.log(d.slice(3,1));//[]
與concat()一樣,slice()語句只是傳回操作後的結果而已,對陣列本身不會產生任何修改。對於slice()語句中的兩個參數,JavaScript遵循「前包含後不包含」的原則:第一個參數所指定的陣列成員會出現在子陣列中,而第二個參數所指定的陣列成員則不會出現。
splice()
可以使用splice()語句來對陣列進行插入和敲除操作。其第一個參數指定插入或敲除的位置(位置成員),第二個參數指定敲除成員的數目(從位置成員開始敲除),從第三個參數開始,所有的參數都會被插入到數組中(從位置成員之前進行插入)。 splice()語句傳回的結果為被敲除的陣列成員所組成的陣列。與concat()和slice()不同,splice()會對陣列本身產生修改。
var e = [1,2,3,4,5,6,7];
console.log(e.splice(1,2));//[2,3]
console.log(e);//[1,4,5,6,7]
console.log(e.length);//5
e.splice(1,0,2,3,[4,5]);
console.log(e);//[1, 2, 3, [4, 5], 4, 5, 6, 7]