我正在练习 ramda。我有一个对象数组,这些对象有一个嵌套的子属性。我想使用 Ramda 的 sortBy 函数根据哪个对象拥有最多的孩子对数组进行排序。
这是一个示例数组:
[
{
"name": "Felicia",
"age": "60",
"children": [
{
"name": "Adrian",
"age": "4"
},
{
"name": "Joseph",
"age": "5"
}
]
},
{
"name": "Alicia",
"age": "43",
"children": [
{
"name": "Billy",
"age": "3"
},
{
"name": "Mary",
"age": "8"
},
{
"name": "john",
"age": "12"
}
]
}
]
使用
R.sortWith
,得到孩子的长度,使用R.descend
从高到低排序:
const { sortWith, descend, path } = R
const fn = sortWith([
descend(path(['children', 'length'])) // or descend(pipe(prop('children'), length))
])
const arr = [{"name":"Felicia","age":"60","children":[{"name":"Adrian","age":"4"},{"name":"Joseph","age":"5"}]},{"name":"Alicia","age":"43","children":[{"name":"Billy","age":"3"},{"name":"Mary","age":"8"},{"name":"john","age":"12"}]}]
const result = fn(arr)
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.28.0/ramda.min.js" integrity="sha512-t0vPcE8ynwIFovsylwUuLPIbdhDj6fav2prN9fEu/VYBupsmrmk9x43Hvnt+Mgn2h5YPSJOk7PMo9zIeGedD1A==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>