我迫切需要实现客户端排序,模拟通过我们的 sweetpie api 进行排序,它可以获取多个字段并返回排序数据。因此,例如,如果我有如下数据:
arr = [
{ name: 'Foo LLC', budget: 3500, number_of_reqs: 1040 },
{ name: '22nd Amendment', budget: 1500, number_of_reqs: 2000 },
{ name: 'STS 10', budget: 50000, number_of_reqs: 500 },
...
etc.
]
并给定列进行排序,例如:['name', '-number_of_reqs']
它应该按name
(升序)和number_of_reqs
(降序)排序。我无法理解这一点,首先它必须是“自然排序”,如果我们谈论对单个列进行排序,它应该很容易得到,但我需要能够排序多。
另外我不确定为什么在使用 lodash's 时会得到不同的结果(从 api 的方式)_.sortBy
?不是_.sortBy
“自然”还是我们的api坏了?
我也在寻找一个优雅的解决方案。最近才开始使用Ramdajs,真是太棒了。我敢打赌,使用它来构建我需要的排序会更容易吗?我试过了,还是不能正确。一点帮助?
更新:
我发现了这个并将它与 Ramda 一起使用,如下所示:
fn = R.compose(R.sort(naturalSort), R.pluck("name"))
fn(arr)
似乎适用于平面数组,但我仍然需要找到一种方法将它应用于我的数组中的多个字段