【发布时间】:2023-04-09 23:31:01
【问题描述】:
我迫切需要实现客户端排序,模拟通过我们的 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 的 _.sortBy 时会得到不同的结果(从 api 的方式)? _.sortBy 不是“自然”还是我们的 api 坏了?
我也在寻找一个优雅的解决方案。最近才开始使用Ramdajs,真是太棒了。我敢打赌,使用它来构建我需要的排序会更容易吗?我试过了,还是不能正确。一点帮助?
更新:
我找到了this,并像这样将它与 Ramda 一起使用:
fn = R.compose(R.sort(naturalSort), R.pluck("name"))
fn(arr)
似乎适用于平面数组,但我仍然需要找到一种方法将其应用于数组中的多个字段
【问题讨论】:
标签: javascript sorting underscore.js lodash ramda.js