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?
asked Nov 19, 2013 at 22:22
thugsb
23.5k6 gold badges32 silver badges44 bronze badges
-
3possible duplicate of Sorting an array of JavaScript objectsRoland Illig– Roland Illig2013年11月19日 22:24:26 +00:00Commented Nov 19, 2013 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– thugsb2013年11月20日 14:43:22 +00:00Commented Nov 20, 2013 at 14:43
2 Answers 2
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);
mquandalle
2,59822 silver badges24 bronze badges
answered Nov 19, 2013 at 22:26
PSL
124k21 gold badges257 silver badges243 bronze badges
Sign up to request clarification or add additional context in comments.
1 Comment
Chinmay Ghule
Why the "- 0.5" though?
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);
answered Jul 9, 2021 at 6:43
Hamza Khursheed
2,9692 gold badges17 silver badges18 bronze badges
Comments
lang-js