Si j'ai un objet comme:
{ 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' }
Si je ne sais pas à l'avance que la liste monte à «c», autre que la boucle à travers l'objet, y a-t-il un moyen d'obtenir le dernier élément de l'objet (par exemple 'carrot'
)?
javascript
object
sprugman
la source
la source
Réponses:
Non. L'ordre n'est pas garanti dans JSON et la plupart des autres structures de données clé-valeur, donc le dernier élément peut parfois être
carrot
et à d'autres moments êtrebanana
et ainsi de suite. Si vous devez vous fier à la commande, le mieux est d'utiliser des tableaux. Le pouvoir des structures de données clé-valeur réside dans l'accès aux valeurs par leurkeys
, pas dans la capacité d'obtenir l'nth
élément de l'objet.la source
[]
c'est vraiment un objet. JS n'a pas de tableaux associatifs en tant que tels, les tableaux ont un accès et une séquence indexés; les objets ont un accès aux propriétés associatif, non séquentiel.Oui, il existe un moyen d'utiliser
Object.keys(obj)
. Il est expliqué dans cette page :Si vous souhaitez obtenir la valeur du dernier objet, vous pouvez le faire:
la source
Object.keys
fonctionne à merveille. Je dois juste trouver un moyen de le faire fonctionner sur IE8 et 7, car cela n'apparaissait que sur IE9.Object.keys
encore et encore pour constater que les propriétés étaient en fait classées au hasard. L'ordre réel des propriétés est différent de ce qui est affiché lors de la connexion à la console de votre navigateur. Lorsqu'elles sont connectées à la console du navigateur, les propriétés sont automatiquement réorganisées et affichées par ordre alphabétique / numérique, ce qui entraîne définitivement une certaine confusion.où obj est votre objet
la source
'c'
dans ce cas) mais la question est formulée d'une manière qui implique que le demandeur recherche la dernière valeur ('carrot'
). Cela n'ajoute pas vraiment quoi que ce soit qui ne soit déjà couvert par la réponse de Kristina Stefanovasource: http://javascriptweblog.wordpress.com
la source
for (firstProperty in myObj) { break; };
Solution utilisant la syntaxe d'affectation de déstructuration d'ES6:
la source
En ce qui concerne l'ordre des propriétés des objets en Javascript, je vais juste faire un lien vers cette réponse:
Ordre des éléments dans une boucle "for (… in…)"
Plus précisément:
Donc, toutes les autres réponses ici sont correctes, il n'y a pas d'ordre officiel garanti pour les propriétés d'objet. Cependant, dans la pratique, il y en a (à l'exception de tous les bugs qui peuvent naturellement gâcher même le comportement officiellement spécifié).
En outre, l'ordre d'énumération de facto des propriétés des objets sera probablement codifié dans les futures spécifications EMCAScript.
Pourtant, pour le moment, je n'écrirais pas de code autour de cela, principalement parce qu'il n'y a pas d'outils intégrés pour aider à gérer l'ordre des propriétés des objets. Vous pouvez écrire le vôtre, mais à la fin, vous bouclez toujours sur chaque propriété d'un objet pour déterminer sa position.
En tant que tel, la réponse à votre question est non , il n'y a pas d'autre moyen que de parcourir un objet.
la source
Utilisez un tableau, pas un objet littéral, si l'ordre est important.
Ou quelque chose comme
Ou même..
Les clés pour
dict
ne sont pas du tout garanties d'être en ordre.la source
Vous pouvez essayer ceci. Cela stockera le dernier élément. Ici, besoin de convertir obj en tableau. Ensuite, utilisez la
pop()
fonction de tableau qui retournera le dernier élément du tableau converti.la source
Les autres réponses me compliquent trop.
la source
la source
Vous pouvez également utiliser la
Object.values()
méthode:la source
Objet cartographique en JavaScript . Cela a déjà environ 3 ans maintenant. Cette structure de données cartographiques conserve l'ordre dans lequel les éléments sont insérés. Avec cette récupération du dernier élément, le dernier élément sera en fait inséré dans la carte
la source
Laissez
obj
être votre objet. Exec:la source
si vous voulez dire obtenir la dernière clé par ordre alphabétique, vous pouvez (garanti):
la source