簡體   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