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)