定義和用法
sort() 方法用于對(duì)數(shù)組的元素進(jìn)行排序官地。
語法
arrayObject.sort(sortby)
返回值
對(duì)數(shù)組的引用挫掏。請(qǐng)注意瘦陈,數(shù)組在原數(shù)組上進(jìn)行排序鳖谈,不生成副本岁疼。
說明
如果調(diào)用該方法時(shí)沒有使用參數(shù),將按字母順序?qū)?shù)組中的元素進(jìn)行排序缆娃,說得更精確點(diǎn)捷绒,是按照字符編碼的順序進(jìn)行排序。要實(shí)現(xiàn)這一點(diǎn)贯要,首先應(yīng)把數(shù)組的元素都轉(zhuǎn)換成字符串(如有必要)暖侨,以便進(jìn)行比較。
如果想按照其他標(biāo)準(zhǔn)進(jìn)行排序崇渗,就需要提供比較函數(shù)字逗,該函數(shù)要比較兩個(gè)值,然后返回一個(gè)用于說明這兩個(gè)值的相對(duì)順序的數(shù)字宅广。比較函數(shù)應(yīng)該具有兩個(gè)參數(shù) a 和 b葫掉,其返回值如下:
若 a 小于 b,在排序后的數(shù)組中 a 應(yīng)該出現(xiàn)在 b 之前跟狱,則返回一個(gè)小于 0 的值俭厚。
若 a 等于 b,則返回 0驶臊。
若 a 大于 b挪挤,則返回一個(gè)大于 0 的值叼丑。
舉例
樣例1:在本例中,我們將創(chuàng)建一個(gè)數(shù)組扛门,并按字母順序進(jìn)行排序:
<script type="text/javascript">
var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"
document.write(arr + "<br />")
document.write(arr.sort())
</script>
輸出:
10,5,40,25,1000,1
1,10,1000,25,40,5
樣例2:請(qǐng)注意鸠信,上面的代碼沒有按照數(shù)值的大小對(duì)數(shù)字進(jìn)行排序,要實(shí)現(xiàn)這一點(diǎn)尖飞,就必須使用一個(gè)排序函數(shù):
<script type="text/javascript">
function sortNumber(a,b)
{
return a - b
}
var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"
document.write(arr + "<br />")
document.write(arr.sort(sortNumber))
</script>
輸出:
10,5,40,25,1000,1
1,5,10,25,40,1000
樣例3:給定一個(gè)未排序的整數(shù)數(shù)組症副,找到其中位數(shù)。function XXX(arr){}
function sortNumber(a,b)
{
return a - b
}
function num(arr){
var newArr = arr.sort(sortNumber);
if(arr.length%2 == 0){
var result = (newArr[arr.length/2 - 1] + newArr[arr.length/2])/2;
}else if(arr.length%2 !== 0) {
var result = newArr[(arr.length+1)/2];
}
console.log('數(shù)組:['+arr+']的中位數(shù)是:'+result);
}
num([2,15,99,78,56,52,32]);
num([15,45,22,23]);
輸出:
數(shù)組:[2,15,32,52,56,78,99]的中位數(shù)是:56
數(shù)組:[15,22,23,45]的中位數(shù)是:22.5