延續探討
陣列函數
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)