Tri Objet JavaScript par la valeur de la propriété

Si j'ai un objet JavaScript tels que:

var list = {
  "you": 100, 
  "me": 75, 
  "foo": 116, 
  "bar": 15
};

Est-il un moyen de trier les propriétés sur la base de la valeur? De sorte que je me retrouve avec

list = {
  "bar": 15, 
  "me": 75, 
  "you": 100, 
  "foo": 116
};
  • Non seulement "tri", mais plus important encore, le tri des nombres. Les numéros sont à l'abri des Javascripts Tableau.méthode sort (), ce qui signifie que vous ne serez pas juste de trouver une méthode pour le tri des propriétés, mais vous aurez à écrire votre propre fonction pour comparer les valeurs numériques.
  • Autant que je sache, les objets n'ont pas d'ordre comme des tableaux faire.
  • Avant de lire les réponses: La réponse est N. L'ordre des propriétés de l'objet est non-standard dans ECMAScript. Vous ne devriez jamais faire des hypothèses sur l'ordre des éléments dans un objet JavaScript. Un Objet est une collection non ordonnée de propriétés. Les réponses ci-dessous vous montrent comment "utiliser" triés propriétés, en utilisant l'aide de tableaux, mais jamais en fait de modifier l'ordre des propriétés des objets eux-mêmes. Donc, non, il n'est pas possible. Même si vous construisez un objet avec le tri préalable des propriétés, il n'est pas garanti qu'ils seront affichés dans le même ordre dans l'avenir. Lisez la suite :).
  • pourtant, dans le monde réel frontend applications que l'on boucle sur les collections d'objets avec des Id que les touches et l'ordre est important si la traduction de modèles HTML. Tu dis qu'ils ont pas d'ordre, je dis qu'ils ont exactement l'ordre que je vois lors de la console.la journalisation dans le navigateur actuel. Et cet ordre peut être réorganisées. Dès que vous vous en boucle sur eux, ils ont un ordre.
  • Il est maintenant un moyen d'accéder à des propriétés dans un ordre spécifié dans la spécification. Est-ce une bonne idée? Presque certainement pas. 🙂 Mais il est là, comme de ES2015.
  • ah, vous avez absolument raison. Encore, avec tous les risques qui viennent avec cet ajout, j'espère que nos collègues SI ils vont lire la frontière avant l'adoption de cette nouvelle approche (comme toujours). 😀
  • 2019 visiteurs: cochez cette peine upvoted Object.entriesde réponse qui est la plus propre et la plus lisible de l'état de l'art depuis ES2017: stackoverflow.com/a/37607084/245966

InformationsquelleAutor Steerpike | 2009-07-01