我有以下对象:
{ key1: 5, key2: 3, key3: 1}
我现在想按值对其进行排序,以便得到:
{ key3: 1, key2: 2, key1: 5
我试过了:
Object.keys(c).map(function (key) {return obj[key]});
但它并没有改变秩序。
答案 0 :(得分:1)
将对象转换为数组数组,然后根据每个子数组中的第二个元素进行排序。
var obj = { key1: 5, key2: 3, key3: 1};
var arr = [];
for (prop in obj) {
arr.push([prop, obj[prop]]);
}
arr.sort(compare);
function compare(a, b) {
return a[1] - b[1];
}
document.querySelector("p").innerHTML = "<pre>" + JSON.stringify(arr, null, 2) + "</pre>";
<p></p>
答案 1 :(得分:0)
您只能对数组中的键进行排序,因为对象没有顺序。
var obj = { key1: 5, key2: 3, key3: 1 },
keys = Object.keys(obj);
keys.sort(function (a, b) {
return obj[a]- obj[b];
});
document.write('<pre>' + JSON.stringify(keys, 0, 4) + '</pre>');