根据对象的值将javascript对象键排序到数组中

时间:2017-02-16 04:11:43

标签: javascript

假设我有一个对象,其中数字为键,字符串为值

var obj = {
    '24': 'Sean',
    '17': 'Mary',
    '88': 'Andrew',
    '46': 'Kelvin'
}

有没有一种简单的方法可以根据键的值将数组排序到数组中,结果如下所示:

[88,46,17,24]

1 个答案:

答案 0 :(得分:5)

这是一种方法:

var obj = {
    '24': 'Sean',
    '17': 'Mary',
    '88': 'Andrew',
    '46': 'Kelvin'
}

var sortedKeys = Object.keys(obj).sort(function(a, b) {
  return obj[a].localeCompare(obj[b]);
}).map(Number)

console.log(sortedKeys)

如果您对结果是字符串数组而不是数字感到满意,则省略.map()部分。

进一步阅读:

或者同样的事情,但ES6 arrow functions

const sortedKeys = Object.keys(obj)
                     .sort((a, b) => obj[a].localeCompare(obj[b]))
                     .map(Number)