我有一个像这样的对象 { alexa:1, 约翰:5, 比尔:2 }
我需要按值从大到小排序,但我看不出怎么做。有什么想法吗?
答案 0 :(得分:1)
您仍然可以获取正在排序的键数组 - 然后只需循环键数组以正确的顺序访问您的对象:
var obj = { alexa: 1, John: 5, Bill: 2 };
var sortedKeys = Object.keys(obj).sort(function(a, b) {
return obj[a] - obj[b]
});
sortedKeys.forEach(function(k) {
console.log(obj[k]);
});
从对象创建数组:
var sortedArray = Object.keys(obj).sort(function(a, b) {
return obj[a] - obj[b]
}).map(function(k) {
var o = {};
o[k] = obj[k];
return o;
});
答案 1 :(得分:0)
var objUnordered = { alexa: 1, John: 5, Bill: 2 };
var objOrdered = {};
var sortable = [];
for (var element in objUnordered){
sortable.push([element, objUnordered[element]]);
}
sortable.sort(function(a, b) {return a[1] - b[1]})
for(var key in sortable){
objOrdered[sortable[key][0]] = sortable[key][1];
}
console.log(objOrdered); //print this -> Object { alexa=1, Bill=2, John=5}