Si tengo un objeto como:
{ 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' }
Si no sé de antemano que la lista sube a 'c', además de recorrer el objeto, ¿hay alguna forma de obtener el último elemento del objeto (por ejemplo 'carrot'
)?
javascript
object
sprugman
fuente
fuente
Respuestas:
No. El orden no está garantizado en JSON y la mayoría de las otras estructuras de datos de valor-clave, por lo tanto, el último elemento a veces podría ser
carrot
y en otras ocasiones,banana
y así sucesivamente. Si necesita confiar en los pedidos, su mejor opción es ir con matrices. El poder de las estructuras de datos clave-valor radica en acceder a los valores por sukeys
, no en poder obtener elnth
elemento del objeto.fuente
[]
, es realmente un objeto. JS no tiene matrices asociativas como tales, las matrices tienen acceso y secuencia indexados; los objetos tienen acceso de propiedad asociativa, no secuencial.Sí, hay una forma de usar
Object.keys(obj)
. Se explica en esta página :Si desea obtener el valor del último objeto, puede hacer esto:
fuente
Object.keys
funciona de maravilla. Solo tengo que encontrar una manera de que funcione en IE8 y 7, porque eso se mostró solo en IE9.Object.keys
una y otra vez solo para descubrir que las propiedades estaban ordenadas al azar. El orden de propiedad real es diferente de lo que se muestra cuando se registra en la consola de su navegador. Cuando se inicia sesión en la consola del navegador, las propiedades se reordenan automáticamente y se muestran alfabéticamente / numéricamente, lo que definitivamente causa cierta confusión.donde obj es tu objeto
fuente
'c'
en este caso) pero la pregunta está redactada de una manera que implica que el autor de la pregunta está buscando el último valor ('carrot'
). Esto tampoco agrega nada que no esté cubierto por la respuesta de Kristina Stefanovafuente: http://javascriptweblog.wordpress.com
fuente
for (firstProperty in myObj) { break; };
Solución utilizando la sintaxis de asignación de desestructuración de ES6:
fuente
En cuanto al orden de las propiedades del objeto en Javascript, solo vincularé a esta respuesta:
Orden de los elementos en un bucle "for (... in ...)"
Específicamente:
Entonces, todas las demás respuestas aquí son correctas, no hay un orden oficial garantizado para objetar propiedades. Sin embargo, en la práctica lo hay (salvo cualquier error que, naturalmente, pueda arruinar incluso el comportamiento establecido en piedra oficialmente especificado).
Además, es probable que el orden de enumeración de facto de las propiedades de los objetos se codifique en futuras especificaciones de EMCAScript.
Aún así, en este momento no escribiría código sobre esto, principalmente porque no hay herramientas integradas para ayudar a lidiar con el orden de las propiedades de los objetos. Podrías escribir el tuyo propio, pero al final siempre estarías recorriendo cada propiedad en un objeto para determinar su posición.
Como tal, la respuesta a su pregunta es No , no hay forma más que recorrer un objeto.
fuente
Use una matriz, no un objeto literal, si el orden importa.
O algo como
O incluso..
dict
No se garantiza en absoluto que las claves estén en orden.fuente
Puedes probar esto. Esto almacenará el último artículo. Aquí es necesario convertir obj en una matriz. Luego use la
pop()
función de matriz que devolverá el último elemento de la matriz convertida.fuente
Las otras respuestas me lo complican demasiado.
fuente
fuente
También puedes usar el
Object.values()
método:fuente
Objeto de mapa en JavaScript . Esto ya tiene unos 3 años. Esta estructura de datos de mapa conserva el orden en que se insertan los elementos. Con esta recuperación, el último elemento dará como resultado el último elemento insertado en el mapa
fuente
Deja que
obj
sea tu objeto. Ejecutivo:fuente
si te refieres a obtener la última clave alfabéticamente, puedes (garantizado):
fuente