繁体   English   中英

使用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匿名函数获胜。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM