Trier la clé d'objet javascript dans un tableau en fonction de la valeur de l'objet


Clueless_Coder

Disons que j'ai un objet avec des nombres comme clé et une chaîne comme valeur

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

Existe-t-il un moyen simple de trier les clés dans un tableau en fonction de leur valeur où le résultat ressemblera à ceci:

[88,46,17,24]
nnnnnn

Voici une façon de le faire:

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)

Omettez la .map()partie si vous êtes satisfait que le résultat soit un tableau de chaînes plutôt que des nombres.

Lectures complémentaires:

Ou la même chose mais avec les fonctions fléchées ES6 :

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

Articles connexes