- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当使用 ramda 的 sort 函数时,我可以使用 descend 函数创建降序比较器:
console.log(R.sort(R.descend(R.prop(0)))([[2],[3],[1]]))
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.min.js"></script>
对于sortBy,这不起作用。该列表默认按升序排序。
R.sortBy(R.prop(0))([[2],[3],[1]])
我能想到的唯一解决方案是在排序后显式反转列表,但是没有更优雅的方法来实现这一点吗?
最佳答案
Ramda 具有多种不同的排序功能。
最熟悉的是sort
,它本质上是 Array.prototype.sort
的非变异纯函数版本。方法。您向它传递一个比较器:一个必须返回数字的二进制函数。如果数字为负数,则结果中第一个参数位于第二个参数之前;如果为正,则第二个参数先于第一个参数;如果它为零,则表示没有任何偏好,尽管现在大多数实现都是稳定的,这意味着第一个参数将出现。
sortWith
是将几个这样的比较器串在一起的一种方法。如果您想按姓氏排序,并且(如果它们相同)按名字排序,您可以传递姓氏比较器和名字比较器,它会根据您的需要进行排序。
为了帮助创建此类比较器函数,Ramda 还提供 ascend
和descend
,它接受一个返回有序类型的函数,例如内置的 String、Number 和 Date 类型,或具有适当 valueOf
的任何类型。方法,并返回一个可以传递给 sort
的比较器。因此,如果您要排序的对象各自具有数字 age
属性,您可以通过传递 descend(o => o.age)
按年龄递减对它们进行排序(相当于 descend(prop('age'))
)到 R.sort
或Array.prototype.sort
或者 - 作为比较器数组之一 - 到 R.sortWith
.
但我们常常想要一些更简单的东西。 我只想按类型代码对它们进行排序。对于最简单的情况,Ramda 提供 sortBy
,它不采用比较器,而只是一个返回有序类型的函数。最常见的是通过简单地从对象中提取属性来使用:sortBy(prop('type'))
,但您可以进行任何您喜欢的转换。
但是没有与 ascend
等效的值/descend
对于 sortBy
。虽然当然可以写类似的东西,但 sort(a/descend(myFunc))
已经涵盖了它。 .
关于javascript - 如何使用 ramda 的 sortBy 函数按降序排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60030175/
序 大家好呀,我是summo,这次来写写我在上班空闲(摸鱼)的时候做的一个小网站的事。去年阿里云不是推出了个活动嘛,2核2G的云服务器一年只要99块钱,懂行的人应该知道这个价格在业界已经是非常良心了
我尝试根据给定的级别顺序(BFS 顺序)构造 BST。我知道这是可能的,但我不知道我该怎么写。问题是我必须使用 BFS 序列。所以,我不能在这里使用递归,我必须迭代地编写我的程序......我发现这有
我是一名优秀的程序员,十分优秀!