js中陣列 Array 重排序方法深析

2021-07-09 22:41:39 字數 1063 閱讀 1955

陣列中已經存在兩個可以直接用來重排序的方法: reverse() 和 sort() 

sort() 方法按公升序排列陣列項——即最小的值位於最前面,最大的值排在最後面。為了實現排序, sort() 方法會呼叫每個陣列項的 tostring() 轉型方法,然後比較得到的字串,以確定如何排序。即使陣列中的每一項都是數值, sort() 方法比較的也是字串,如下所示。

var values = [0, 1, 5, 10, 15];

values.sort();

alert(values); //0,1,10,15,5

sort() 方法可以接收乙個比較函式作為引數,以便我們指定哪個值位於哪個值的前面。

比較函式接收兩個引數,如果第乙個引數應該位於第二個之前則返回乙個負數,如果兩個引數相等則返回 0,如果第乙個引數應該位於第二個之後則返回乙個正數。以下就是乙個簡單的比較函式:

function compare(value1, value2)  else if (value1 > value2)  else 

}var values = [0, 1, 5, 10, 15];values.sort(compare);//公升序

alert(values); //0,1,5,10,15

當然,也可以通過比較函式產生降序排序的結果,只要交換比較函式返回的值即可。
function compare(value1, value2)  else if (value1 > value2)  else 

}var values = [0, 1, 5, 10, 15];

values.sort(compare);

alert(values); // 15,10,5,1,0

對於數值型別或者其 valueof() 方法會返回數值型別的物件型別,可以使用乙個更簡單的比較函式。這個函式只要用第二個值減第乙個值即可。

function compare(value1, value2)

注:reverse() 和 sort() 方法的返回值是經過排序之後的陣列。

陣列重排序方法

reverse 和sort 方法的返回值是經過排序後的陣列。reverse 方法會反轉陣列項的順序 var values 1,2,3,4,5 values.reverse alert values 5,4,3,2,1 在預設情況下,sort 方法按公升序排列陣列,sort 方法會呼叫每個陣列項的to...

js 多維陣列去重排序

定義乙個陣列 let arr 1,2,3 7,0,5 6,9,8 輸出結果 console.log new set arr.flat infinity sort 0,1,2,3,5,6,7,8,9 用於將巢狀的陣列 拉平 變成一維的陣列。該方法返回乙個新陣列,對原資料沒有影響。如果不管有多少層巢狀,...

js 中的陣列Array

1 ecmascript 中的陣列與其他語言中的陣列有些不同,ecmascript中的陣列可以每一項都不同型別,陣列的大小可以動態調整。var colors new array var colors new array 20 var colors new array red blue green v...