如何使用 Ramda 的 sortBy 函数根据嵌套属性对对象数组进行排序

问题描述 投票:0回答:1

我正在练习 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"
      }
    ]
  }
]

javascript ramda.js
1个回答
1
投票

使用

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>

© www.soinside.com 2019 - 2024. All rights reserved.