Skip to content

Instantly share code, notes, and snippets.

@orther
Created January 27, 2017 17:34
Show Gist options
  • Save orther/0081dda0006fb2e23fdd41b7a8c648e0 to your computer and use it in GitHub Desktop.
Save orther/0081dda0006fb2e23fdd41b7a8c648e0 to your computer and use it in GitHub Desktop.

Revisions

  1. Brandon Orther created this gist Jan 27, 2017.
    45 changes: 45 additions & 0 deletions index.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,45 @@
    import R from 'ramda';
    const items = [
    {id: 1, name: 'Al', country: 'AA'},
    {id: 2, name: 'Connie', country: 'BB'},
    {id: 3, name: 'Doug', country: 'CC'},
    {id: 4, name: 'Zen', country: 'BB'},
    {id: 5, name: 'DatGGboi', country: 'AA'},
    {id: 6, name: 'Connie', country: 'AA'},
    ];

    const propName = R.prop('name');
    const propCountry = R.prop('country');

    // ~ ORDER BY name ASC, country ASC
    const sortOne = R.sortWith([
    R.ascend(propName),
    R.ascend(propCountry),
    ]);

    // ~ ORDER BY country ASC, name ASC
    const sortTwo = R.sortWith([
    R.ascend(propCountry),
    R.ascend(propName),
    ]);

    // ~ ORDER BY LENGTH(state) DESC, country ASC
    const sortThree = R.sortWith([
    R.descend(R.compose(R.length, propName)),
    R.ascend(propCountry),
    ]);

    console.group('sortOne ~ ORDER BY name ASC, country ASC');
    console.table(sortOne(items));
    console.groupEnd();
    console.log();

    console.group('sortTwo ~ ORDER BY country ASC, name ASC');
    console.table(sortTwo(items));
    console.groupEnd();
    console.log();

    console.group('sortThree ~ ORDER BY LENGTH(state) DESC, country ASC');
    console.table(sortThree(items));
    console.groupEnd();
    console.log();