首頁 > web前端 > js教程 > 主體

JS中數組重排序方法

高洛峰
發布: 2016-12-07 10:34:55
原創
1364 人瀏覽過

1.數組中已存在兩個可直接用來重新排序的方法:reverse()和sort()。

reverse()和sort()方法的傳回值是經過排序後的陣列。 reverse()方法會反轉數組項目的順序:

var values=[1,2,3,4,5];
values.reverse();
alert(values); //5,4,3,2,1
登入後複製

   

在預設情況下,sort()方法按升序排列數組,sort()方法會呼叫每個數組項目的toString()轉換方法,然後比較得到字串,決定如何排序。即使陣列中的每一項都是數值,sort()方法比較的也是字串:

var values = [0,1,5,10,15];
values.sort();
alert(values); //0,1,10,15,5
登入後複製

   

因此,sort()方法可以接收一個比較函數作為參數。

function compare(value1,value2){
if (value1 < value2){
return -1;
}else if (value1 > value2){
return 1;
}else{
return 0;
}
}
登入後複製

   

此比較函數可適用於大多數資料類型,只要將其作為參數傳遞給sort()方法即可:

var values = [0,1,3,7,9,15];
values.sort(compare);
alert(values); //0,1,3,7,9,15
登入後複製

   

交換函數回傳值即可:

function compare (value1, value2){
if (value1<value2){
return 1;
}else if {
return -1;
}else{
return 0;
}
}
登入後複製

   

sort()函數的排序條件是:

參數大於0,arr的相鄰兩個元素交換位置;

參數小於0,arrarr的相鄰兩元素交換個元素不交換位置;

參數等於0,arr的相鄰兩個元素大小相等;所以compare自訂函數必須傳回一個數值。


2.對於數值類型或valueOf()方法會傳回數值類型的物件類型。

可使用一個更簡單的比較函數。此函數只要第二個值減第一個值即可。

function compare (value1,value2){
return value2 - value1;
}
登入後複製
   


相關標籤:
js
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板