使用ramda.js中的嵌套字段进行排序
Sorting using nested field in ramda.js
在sortBy的文档中,它说我们可以使用R.prop根据对象的字段对其进行排序。但是,如果我必须按照嵌套字段进行排序,它是不起作用的。例如R.prop("id.number")不起作用。
var items = [{id:3},{id:1},{id:2}];
var sorter = R.sortBy(R.prop('id'));
sorter(items)
工作良好。但是如果我有一个嵌套结构
var items = [{id:{number:3}},{id:{number:1}},{id:{number:2}}];
var sorter = R.sortBy(R.prop('id.number'));
sorter(items)
返回一个空列表。我想有一种正确的方法来使用R.prop,但我不知道。
您可以使用R.path
来访问嵌套属性,因此您的示例将变成R.sortBy(R.path(['id', 'number']))
除非我弄错了,否则id.number
本身被检查为属性,而实际上只有属性id
。R.prop()
只检查一个级别的下嵌套结构超出了它的能力,之后被要求查找属性number
是不起作用的。
文档指出sortBy
接受一个考虑某个元素的函数。以下内容在ramda.js REPL上进行了测试,并且有效:
var items = [{id:{number:3}},{id:{number:1}},{id:{number:2}}];
var sorter = R.sortBy(function(item) {return item['id']['number'];});
sorter(items)
它只需依次查找属性即可工作。
tl;dr Anonymous函数获胜。
相关文章:
- 高级自定义字段按单选按钮值排序
- 如何指定我按哪个字段排序
- 按字段值作为参数对数组中的对象进行排序
- 如何通过三个不同的字段对javascript数组进行排序
- Mongoose,按填充字段对查询进行排序
- 使用ramda.js中的嵌套字段进行排序
- 我需要使用mongodb本机驱动程序来查找按时间戳字段排序的不同id
- 如何在JavaScript中对具有多个字段值的对象数组进行排序
- 如何在客户端通过多个字段对java对象进行排序
- 当字段的值可以为空时对 javascript 数组进行排序
- 使用猫鼬.js嵌套数组中的字段排序
- 选择下拉列表时,按角度中的多个字段排序
- Js lodash 按更深的字段排序
- AngularJS 按整数字段排序无法正常工作
- 选择包含每个唯一字段值的行,并按另一个具有限制的字段排序
- 按Lodash 2.x中的多个字段排序
- 在javascript中实现搜索结果的多字段排序
- n -repeat track by $index打破图像字段排序
- 如何使用lodash/underscore按多个嵌套字段排序?
- 在ExtJS中选择布尔字段排序的方向类型