JavaScript概論(6)

JavaScript

延續探討

陣列函數

Array.sort()

函數說明:陣列以Unicode編碼排序,並回傳(不會更動原始陣列)

傳入參數說明:

範例:

var a = [111,22,3];

a.sort();

說明:輸出的陣列排序會為111、22、3,無論輸入的陣列資料是數字還是文字sort()函數都會以Unicode編碼排序輸入的陣列,所以111會排在最前面,22會排在3前面,這是此函數和認知上的排序不同的地方。

範例2:

var a = [‘ant’,’Message’,’cat’,’NAS’];

a.sort();

說明:輸出的陣列排序會為Message、NAS、ant、cat,和上一個範例一樣因為Unicode編碼中的大寫順位在前小寫順序較後所以排序上大寫會在前面,小寫會在後面,字母的順序則和認知上一樣a在最前面z在最後面。

 

Array.sort([compareFunction])

函數說明:sort函數會按照輸入的[compareFunction]決定排序的方式

傳入參數說明:

compareFunction:回傳值小於零的時候輸入s會放在較前面的位置輸入t則放在較後的位置,回傳值大於零的時候輸入s會放在較後的位置,t則會放在較前的位置。

範例:

var a = [‘ant’,’Message’,’cat’,’NAS’];

a.sort(function(s,t){

var a = s.toLowerCase();

var b = t.toLowerCase();

if(a>b)return 1;

if(a<b)return -1;

return 0;

});

說明:輸出的陣列排序會為ant、cat、Message、NAS,compareFunction中先將輸入的值都變成小寫,接下來比較已經變成小寫的兩個輸入變數,若小寫的s變數大於小寫的變數t,則將t變數移到較前面的位置,若小寫的s變數小於小寫的變數t,則將s變數移到較前面的位置,若兩者相等,則不移動位置。

 

Array.concat(value1[, value2[, …[, valueN]]])

傳入參數說明:傳入的參數可以是單一一個值,或是多個值,或是陣列且值和陣列可以同時存在。

函數說明:陣列和輸入的參數組合成新的陣列,輸入的參數會接續在原本陣列的末端。

範例:

var a = [1,2,3];

a.concat(4,5);

說明:回傳陣列為[1,2,3,4,5],a陣列後方加入兩個參數值4和5的結果。

範例2:

var a = [1,2,3];

a.concat([4,5]);

說明:回傳陣列為[1,2,3,4,5],a陣列後方加入一個陣列[4,5]的結果。

範例3:

var a = [1,2,3];

a.concat([4,5],[6,7]);

說明:回傳陣列為[1,2,3,4,5,6,7],a陣列後方加入兩個陣列[4,5]和[6,7]的結果。

範例4:

var a = [1,2,3];

a.concat(4,[5,[6,7]]);

說明:回傳陣列為[1,2,3,4,5,[6,7]],a陣列後方加入一個參數4和一個陣列[5,[6,7]]的結果。

 

Array.slice([begin[, end]])

函數說明:複製部分陣列

傳入參數說明:

begin:從陣列的哪個位置開始複製

end:停止於陣列位置的前一個位置

範例:

var a = [1,2,3,4,5];

a.slice(0,3);

說明:回傳陣列為[1,2,3],從陣列零開始取到陣列三的前一個位置。

範例2:

var a = [1,2,3,4,5];

a.slice(3);

說明:回傳陣列為[4,5],從陣列三開始取到最後一個位置。

範例3:

var a = [1,2,3,4,5];

a.slice(1,-1);

說明:回傳陣列為[2,3,4],從陣列一開始取到陣列倒數第一個位子的上一的前一個位置。

範例4:

var a = [1,2,3,4,5];

a.slice(-3,-2);

說明:回傳陣列為[3],從陣列一開始取到陣列倒數第三個位子的上一的前二個位置。

 

結語:這次介紹的是javascript的陣列相關的函數及使用方式,陣列的方法回傳大多都是複製一個新的陣列,不會影響到原始陣列的資料,這次介紹的幾個陣列的函數都有一些使用上要注意的地方,像是sort要注意它的排序是使用Unicode編碼排序,所以不會照著數字的大小排序,還有slice的end值是取到end值的前一個位置。

 

參考:JavaScript大全(ISBN:9789862764411)

 

Comments

No comments yet. Why don’t you start the discussion?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料