[英]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.