zoukankan      html  css  js  c++  java
  • [Ramda] Sort, SortBy, SortWith in Ramda

    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));
  • 相关阅读:
    while和do while习题
    Flexigrid折行显示问题
    【Cocos2d-x游戏引擎开发笔记(25)】XML解析
    ruby简单的基本 6
    原因好消息: PSP游戏自己主动算法设计(两)
    《约会专家》拖车【约会宝典】总结
    C++在stack的deque实现
    hdu 4869
    SQL Server 2008杀数据库连接
    BestCoder-Round#33
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6510712.html
Copyright © 2011-2022 走看看