1

Here is my Array, I need to sort the second element

[{id:1,name:beta},
{id:2,name:alpha},
{id:3,name:charlie}]

How can i sort it like

[{id:2,name:alpha},
    {id:1,name:beta},
    {id:3,name:charlie}]

I tried like

roles = roles.sort(function(a,b) {
      return a[1] - b[1];
    });

and

roles = roles.sort(function(a,b) {
      return a.name - b.name;
    });

It doesn't sort like expected, as i have object inside the array. How can i do it ?

SA__
  • 1,782
  • 3
  • 20
  • 41
  • 1
    try -> `return a.name.localeCompare(b.name);` A string minus a string really doesn't make much sense.. :) – Keith Feb 02 '18 at 10:07
  • // With underscore js var obj = [{id:1,name:"beta"}, {id:2,name:"alpha"}, {id:3,name:"charlie"}]; var result = _.sortBy(obj,"name"); console.log(result); – Dipak Feb 02 '18 at 10:25

1 Answers1

3

Compare a.name and b.name in your sort function.

var arr = [
  {
    id: 1,
    name: 'beta'
  },
  {
    id: 2,
    name: 'alpha'
  },
  {
    id: 3,
    name: 'charlie'
  }
];

arr = arr.sort(function(a,b){
  return +(a.name > b.name);
});

console.log(arr);
Zenoo
  • 12,670
  • 4
  • 45
  • 69