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