0
let records = [
    {name: 'damilola', address: 'house 11'},
    {name: 'adeniji', address: 'House 1'},
    {name: 'segun', address: 'House 2'},
    {name: 'nathan', address: 'House 3'},
    {name: 'damilola', address: 'house 12'},
    {name: 'damilola', address: 'house12me'},
    {name: 'damilola', address: 'house11me'},
];

return _.orderBy(records, "address", "asc");

i want to sort this with lodash method only

Desired Output:

[{name: 'adeniji', address: 'House 1'},
{name: 'segun', address: 'House 2'},
{name: 'nathan', address: 'House 3'},
{name: 'damilola', address: 'house 11'}
{name: 'damilola', address: 'house 12'}
{name: 'damilola', address: 'house11me'}
{name: 'damilola', address: 'house12me'}]
Hassan Imam
  • 21,956
  • 5
  • 41
  • 51
Segun Adeniji
  • 370
  • 5
  • 11

2 Answers2

3

You can use string#localeCompare. To numerically sort the array use numeric property.

let records = [ {name: 'damilola', address: 'house 11'}, {name: 'adeniji', address: 'House 1'}, {name: 'segun', address: 'House 2'}, {name: 'nathan', address: 'House 3'}, {name: 'damilola', address: 'house 12'}, {name: 'damilola', address: 'house12me'},{name: 'damilola', address: 'house11me'}];
records.sort((a,b) => a.address.localeCompare(b.address, undefined, {numeric: true}));
console.log(records);
Hassan Imam
  • 21,956
  • 5
  • 41
  • 51
0

Maybe try this?

const sorted = _.orderBy(records, ["name", "address"])

Also, here's lodash documentation for this method: https://lodash.com/docs/#orderBy

Anton Harniakou
  • 855
  • 6
  • 13