我的目标是:
[ '4e95b308d36f429729000021': 1,
'4e95b309d36f429729000039': 2,
'4e95b308d36f429729000001': 1 ]
我想排序,使 2
值的键排在第一位。我知道这个问题之前已被问过一百万次,但这行不通:
var descSort;
descSort = function(a, b) {
return b.value - a.value;
};
popularLocationsArray.sort(descSort);
最佳答案
首先,您的代码不是有效的 JavaScript,它应该是:
var popularLocationsArray = [
{'4e95b308d36f429729000021': 1},
{'4e95b309d36f429729000039': 2},
{'4e95b308d36f429729000001': 1}
]
知道您的问题是您不知道每个对象中的键名称,并且您想按该键的值进行排序。首先,您需要定义一个辅助函数:
function anyVal(obj) {
for(var key in obj) {
if(obj.hasOwnProperty(key)) {
return obj[key]
}
}
}
现在排序很简单:
popularLocationsArray.sort(function(a,b) {return anyVal(a) - anyVal(b)});
关于javascript - 如何根据值对 JavaScript 中的对象进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7746590/