arr.sort() 排序,排序分為預設排序和自定義排序;
預設排序,該方法會呼叫每個陣列項的tostring()方法,然後按照字串行排序 ;
自定義排序,該排序應該考慮分很多種,有純數字排序,純單個字母排序,多字母單詞排序,按要求對陣列內的物件進行排序等等。
排序除了陣列項的要求以外還存在公升序/降序的要求。
var arr =[3
,4,1
,2,11
,112,89
];// var arr = ['tom','terry','fairy','ronda'];
console.
log(
'原陣列:'
, arr)
;// [3, 4, 1, 2, 11, 112, 89]
// console.log(arr.sort()) // [1, 11, 112, 2, 3, 4, 89] --> 由此可以看出,其實這個預設排序的結果一般都不會是我們想要的結果
// console.log(arr) // [1, 11, 112, 2, 3, 4, 89]
// 更多時候,我們是希望得到從大到小或者從小到大的排序結果
// 因此,我們自己定義乙個比較函式
function
compare
(a,b)
console.
log(arr.
sort
(compare)
)// [1, 2, 3, 4, 11, 89, 112]
console.
log(arr)
// [1, 2, 3, 4, 11, 89, 112]
前面的比較函式適合於大多數的資料型別;
當然,我們需要考慮的更為全面些才行,比如陣列中存放物件時,當需要按照某乙個屬性排序,更或者,被進一步指定公升序或者降序,那麼前面的比較函式是絕對做不到的;
接下來重新定義乙個比較函式,讓此函式能萬能的解決所要求的多元的排序,能夠按照不同的屬性(比較數值)公升序或者降序。
var arr =[3
,4,1
,2,11
,112,89
];var arr2 =
['test'
,'hello'
,'a'
,'come'];
var arr3 =[,
,,];
function
evecompare
(order, attr)
return1;
}else
return1;
}}else
return1;
}else
return1;
}}}else}}
// 測試檢驗
// desc降序 asc公升序
console.
log(
'原陣列:'
,arr)
console.
log(arr.
sort
(evecompare
('desc'))
)console.
log(arr.
sort
(evecompare
('asc'))
)console.
log(
'原陣列:'
,arr2)
console.
log(arr2.
sort
(evecompare
('asc'))
)console.
log(arr2.
sort
(evecompare
('desc'))
)// console.log('原陣列:',arr3)
// 對組數按照物件的屬性進行排序
/* console.log(arr3.sort(evecompare('asc','name')))
console.log(arr3.sort(evecompare('desc','name')))
console.log(arr3.sort(evecompare('asc','age')))
console.log(arr3.sort(evecompare('desc','age')))
console.log(arr3.sort(evecompare('asc','score')))
console.log(arr3.sort(evecompare('desc','score'))) */
上面函式的**我們可以用三目元算符給簡化,得到如下:
// 最終**簡化
/* return function (a, b) */
萬能排序 快速排序
int campare const void a,const void b void swap char a,char b,int size void quicksort void k,int start num,int end num,int size,int campar const void ...
自定義排序函式
python 內建的sorted 函式可對 list 進行排序 sorted 36,5,12,9,21 5,9,12,21,36 但 sorted 也是乙個高階函式,它可以接收乙個比較函式來實現自定義排序,比較函式的定義是,傳入兩個待比較的元素 x,y 如果x 應該排在 y 的前面,返回 1,如果 ...
自定義排序函式
python內建的sorted 函式可對list進行排序 sorted 36,5,12,9,21 5,9,12,21,36 但sorted 也是乙個高階函式,它可以接收乙個比較函式來實現自定義排序,比較函式的定義是,傳入兩個待比較的元素 x,y,如果 x 應該排在 y 的前面,返回 1,如果 x 應...