lodash sortByOrder is not working as expected?

Viewed 501

lodash sortByOrder is not working as expected

Following is a demo code in my angular app. But sortByOrder is not getting imported correctly.

I;ve updated with latest version of lodash. I've also updated @types/lodash.

import { sortByOrder } from 'lodash';

const users = [
  { 'user': 'fred',   'age': 48 },
  { 'user': 'barney', 'age': 34 },
  { 'user': 'fred',   'age': 42 },
  { 'user': 'barney', 'age': 36 }
];
 
// sort by `user` in ascending order and by `age` in descending order
_.map(_.sortByOrder(users, ['user', 'age'], ['asc', 'desc']), _.values);
// => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>

I am getting following error

lodash/ts3.1"' has no exported member 'sortByOrder'.
2 Answers

Do you really need lodash for it? Look at this example with vanilla js

const users = [
  { 'user': 'fred',   'age': 48 },
  { 'user': 'barney', 'age': 34 },
  { 'user': 'fred',   'age': 42 },
  { 'user': 'barney', 'age': 36 },
  { 'user': 'fed', 'age': 40 }
];

let result = users.sort((a,b) => a.user.localeCompare(b.user) || (b.age - a.age));

console.log(result);

Since version 4 its called _.orderBy

Import Lodash like this

import * as _ from 'lodash';

You can use Lodash _.orderBy function to order using multiple properties

const data = _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
Related