0

I have array of objects:

[{
 user: "userName1",
 roles: [7,4]
},
{
 user: "userName2",
 roles: [0,3]
},
{
 user: "userName4",
 roles: [7,2]
},
{
 user: "userName3",
 roles: [6,5]
}]

I need sort this array by roles. First roles[0] then roles[1].

My result must be sorted like this:

0. userName1
1. userName4
2. userName3
3. userName2
David Lences
  • 113
  • 3
  • 11

1 Answers1

1

var data = [{ user: "userName1", roles: [7,4] }, { user: "userName2", roles: [0,3] }, { user: "userName4", roles: [7,2] }, { user: "userName3", roles: [6,5] }];

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


document.write('<pre>'+JSON.stringify(data,0,2) + '</pre>');
isvforall
  • 8,768
  • 6
  • 35
  • 50
  • Thank you. Know you how I can sort all `roles` where value is `[0,0]` change sort by `username` ASC? – David Lences Apr 04 '16 at 17:02
  • @DavidLences you're welcome, I'm happy to help you, you should learn more about the [sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) function. – isvforall Apr 04 '16 at 17:26