5

How do I sort this array:

[{"qwe":4}, {"rty":5}, {"asd":2}]

To get this:

[{"asd":2}, {"qwe":4}, {"rty":5}]

So that the array is sorted by the name of the key of the objects?

thugsb
  • 22,856
  • 6
  • 30
  • 44
  • 3
    possible duplicate of [Sorting an array of JavaScript objects](http://stackoverflow.com/questions/979256/sorting-an-array-of-javascript-objects) – Roland Illig Nov 19 '13 at 22:24
  • It's not a duplicate. That question wanted to sort by a known key that exists in each object in the array. This question wants to sort by the key name itself, which is different from object to object. – thugsb Nov 20 '13 at 14:43

2 Answers2

8

Something like this using Array.sort(compareFunction) ?

var myArray =[{"qwe":4}, {"rty":5}, {"asd":2}];
myArray.sort(function(a,b){
    return (Object.keys(a)[0] > Object.keys(b)[0]) - 0.5;
});
console.log(myArray);

Demo

mquandalle
  • 2,600
  • 20
  • 24
PSL
  • 123,204
  • 21
  • 253
  • 243
0

PSL's answer have one problem that is if your array has uppercase and lowercase keys i.e. "john", "Naveed" then this solution is not going to work correctly. Following changes need to be done:

let source = [{"john": 12},{"Ali": 10},{"Naveed": 18}];

var target = source.sort(function(a,b){
 return (Object.keys(a)[0].toLowerCase() > Object.keys(b)[0].toLowerCase()) - 0.5;
});
console.log(target);
Hamza Khursheed
  • 2,399
  • 2
  • 15
  • 17