2017-05-04 1 views

Répondre

5

let obj = {a: 24, b: 12, c:21, d:15}; 
 

 
// Get an array of the keys: 
 
let keys = Object.keys(obj); 
 

 
// Then sort by using the keys to lookup the values in the original object: 
 
keys.sort(function(a, b) { return obj[a] - obj[b] }); 
 

 
console.log(keys);

Notez que le pourrait être fait ci-dessus dans une ligne si on le désire avec Object.keys(obj).sort(...). La simple fonction de comparaison .sort() montré fonctionnera pour des valeurs numériques (échange a et b pour trier dans le sens opposé), mais puisque c'est ce qui est dans la question que je suppose que c'est bien ...

+0

Ceci ne fonctionne que pour les valeurs numériques, donc si votre tableau a d'autres types, vous devrez définir le 'compareFunction' complet. – Blender

+0

Est-ce que 'Object.keys()' renvoie un tableau? –

+0

Oui, 'Object.keys()' renvoie un tableau. Vous pouvez faire ce qui précède en une ligne si vous le souhaitez, comme 'Object.keys (obj) .sort (...)'. @Blender - Oui, mais ce n'est pas le cas. Nous ne pouvons pas vraiment définir un comparateur de tri générique pour tous les types, car les valeurs peuvent être des objets imbriqués ou ... n'importe quoi. – nnnnnn

1
var obj = { 
    a: 24, b: 12, c:21, d:15 
}; 
var sortable = []; 
for (var x in obj) { 
    sortable.push([x, obj[x]]); 
} 

sortable.sort(function(a, b) { 
    return a[1] - b[1]; 
}); 

console.log(sortable) 
0

est la façon ici pour obtenir trier l'objet et obtenir en retour l'objet trié

let sortedObject = {} 
sortedObject = Object.keys(yourObject).sort((a, b) => { 
         return yourObject[a] - yourObject[b] 
        }).reduce((prev, curr, i) => { 
         prev[i] = yourObject[curr] 
         return prev 
        }, {}); 

vous pouvez personnaliser votre fonction de tri selon vos besoins