[Ramda] Sort, SortBy, SortWith in Ramda

本文通过示例详细介绍了 Ramda.js 中 sort、sortBy 和 sortWith 函数的区别及使用方法,展示了如何根据不同属性和条件对复杂对象数组进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

The difference between sort, sortBy, sortWith is that:

1. sort: take function as args.

2. sortBy: take prop as args.

3. sortWith: take array of funcs as args.

 

const R = require('ramda');

const {sort, sortBy, sortWith, descend, prop, ascend} = R;

const sample = [
    {name: "Sally", age: 29, height: 65},
    {name: "Zac", age: 29, height: 72},
    {name: "John", age: 32, height: 61},
    {name: "Lisa", age: 28, height: 63},
    {name: "Bob", age: 29, height: 66},
    {name: "Allen", age: 29, height: 66}
];

const heightDescending = descend(prop('height'));
const ageDescending = descend(prop('age'));
const nameAscending = ascend(prop('name'));

const sortWithCondition = sortWith([
                                       heightDescending,
                                       ageDescending,
                                       nameAscending
                                   ]);

const result = sortWithCondition(sample);
/*
* [ { name: 'Zac', age: 29, height: 72 },
  { name: 'Allen', age: 29, height: 66 },
  { name: 'Bob', age: 29, height: 66 },
  { name: 'Sally', age: 29, height: 65 },
  { name: 'Lisa', age: 28, height: 63 },
  { name: 'John', age: 32, height: 61 } ]
* */
console.log(result);

/*
* sort: take function
* */
const sortByNameDescending = sort(descend(prop('name')));
const result1 = sortByNameDescending(sample);
/*
* [ { name: 'Zac', age: 29, height: 72 },
  { name: 'Sally', age: 29, height: 65 },
  { name: 'Lisa', age: 28, height: 63 },
  { name: 'John', age: 32, height: 61 },
  { name: 'Bob', age: 29, height: 66 },
  { name: 'Allen', age: 29, height: 66 } ]
* */
console.log("sortByNameDescending:", result1);


/*
* sortBy: take prop
* */
const age = prop('age');
const result2 = sortBy(age);
/*
* [ { name: 'Lisa', age: 28, height: 63 },
  { name: 'Sally', age: 29, height: 65 },
  { name: 'Zac', age: 29, height: 72 },
  { name: 'Bob', age: 29, height: 66 },
  { name: 'Allen', age: 29, height: 66 },
  { name: 'John', age: 32, height: 61 } ]
* */
console.log(result2(sample));

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值