按数值对对象排序

时间:2016-03-03 21:53:00

标签: javascript sorting

我有以下对象:

{ key1: 5, key2: 3, key3: 1}

我现在想按值对其进行排序,以便得到:

{ key3: 1, key2: 2, key1: 5

我试过了:

Object.keys(c).map(function (key) {return obj[key]});

但它并没有改变秩序。

2 个答案:

答案 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>');