在JavaScript中按键名对对象数组进行排序

5

如何对这个数组进行排序:

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

要获得这个:
[{"asd":2}, {"qwe":4}, {"rty":5}]

所以要按照对象键的名称排序数组吗?


3
可能是JavaScript对象数组排序的重复问题。 - Roland Illig
这不是重复的问题。那个问题想要按照数组中每个对象都存在的已知键进行排序。而这个问题想要按照键名本身进行排序,这在对象之间是不同的。 - thugsb
2个回答

8

是否可以使用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


1
为什么要加上“-0.5”呢? - Chinmay Ghule

0
PSL的答案有一个问题,那就是如果你的数组具有大写和小写键,例如“john”、“Naveed”,那么这种解决方案将无法正常工作。需要进行以下更改:
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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接