array.sort([compareFunction])有一個可選的功能,它可以作爲一個自定義的比較
fruits.sort(function(a, b){
return a - b;
});
如果你想降序排序
fruits.sort(function(a, b){
return b - a;
});
經由:MDN Array.prototype.sort docs
- 如果
compareFunction(a, b)
小於0,排序一個比B,即一個較低折射率的第一。
- 如果
compareFunction(a, b)
返回0,則相對於彼此保持a和b不變,但相對於所有不同的元素進行排序。注意:ECMAscript標準並不保證這種行爲,因此並非所有瀏覽器(例如,至少可以追溯到2003年的Mozilla版本)都尊重這一點。
- 如果
compareFunction(a, b)
大於0,排序b鍵比較低折射率。
compareFunction(a, b)
當給定一對特定元素a和b作爲其兩個參數時,必須始終返回相同的值。如果不一致的結果返回則排序順序是未定義
最近,我一直在做一些函數式編程。對於那些想要以不同方式解決相同問題的人來說,我將把這一部分留作另一種選擇。
首先,我們有一些通用的實用功能。當我們想要定義我們的高階asc
和desc
排序功能時,這些將是必要的。
const sub = x => y => y - x;
const flip = f => x => y => f (y) (x);
const uncurry = f => (x,y) => f (x) (y);
const sort = f => xs => xs.sort(uncurry (f));
現在你可以在sub
const asc = sort (flip (sub));
const desc = sort (sub);
方面很容易地定義asc
和desc
檢查出來
asc ([4,3,1,2]); //=> [1,2,3,4]
desc ([4,3,1,2]); //=> [4,3,2,1]
,您仍然可以做一個自定義排序使用sort (comparator) (someData)
// sort someData by `name` property in ascending order
sort ((a,b) => a.name - b.name) (someData); //=> ...
誰能告訴我,爲什麼'的.sort()'渲染錯誤輸出? – void