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

Clu*_*der 3 javascript

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

var obj = {
    '24': 'Sean',
    '17': 'Mary',
    '88': 'Andrew',
    '46': 'Kelvin'
}
Run Code Online (Sandbox Code Playgroud)

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

[88,46,17,24]
Run Code Online (Sandbox Code Playgroud)

nnn*_*nnn 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)
Run Code Online (Sandbox Code Playgroud)

.map()如果您希望结果是字符串数组而不是数字,请省略该部分。

进一步阅读:

还是相同的东西,但是带有ES6箭头功能

const sortedKeys = Object.keys(obj)
                     .sort((a, b) => obj[a].localeCompare(obj[b]))
                     .map(Number)
Run Code Online (Sandbox Code Playgroud)