Me gustaría obtener las claves de un objeto JavaScript como una matriz, ya sea en jQuery o JavaScript puro.
¿Hay una forma menos detallada que esta?
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [];
for (var key in foo) {
keys.push(key);
}
javascript
ecmascript-5
Ricardo
fuente
fuente
if(foo.hasOwnProperty(key))
, eso es lo que haría. O usar$.map
.for var in x
buclesRespuestas:
Uso
Object.keys
:Esta es una característica de ES5. Esto significa que funciona en todos los navegadores modernos, pero no funcionará en los navegadores heredados .
El ES5-shim tiene una implementación
Object.keys
que puedes robarfuente
Puedes usar jQuery's
$.map
.fuente
each
, si estás haciendo algo con ellos.$.each(foo, function(index, value){/* do something with index */});
Por supuesto,
Object.keys()
es la mejor manera de obtener las claves de un Objeto. Si no está disponible en su entorno, se puede trivializar usando código como en su ejemplo (excepto que tendrá que tener en cuenta que su bucle iterará sobre todas las propiedades de la cadena del prototipo, a diferenciaObject.keys()
del comportamiento).Sin embargo, su código de ejemplo ...
jsFiddle .
... podría ser modificado. Puede hacer la tarea directamente en la parte variable .
jsFiddle .
Por supuesto, este comportamiento es diferente de lo que
Object.keys()
realmente hace ( jsFiddle ). Simplemente puede usar la cuña en la documentación de MDN .fuente
var keys = [], i = 0; for (keys[i++] in foo) {}
+1hasOwnProperty()
cheque, ¿verdad?No sé acerca de menos detallado, pero me inspiró para obligar a lo siguiente en una línea por la solicitud de una línea, sin embargo, no sé cuán pitónico es;)
fuente
var enumerableKeysOnThePrototypeChain
;)for (keys[i++] in foo) {}
), porque todavía está realizandoArray.push()
(sin mencionar que declara una función completa). Una implementación pitónica debe basarse tanto en la comprensión implícita como sea posible, y en su defecto, utilizando una expresión lambda.En caso de que esté buscando algo para enumerar las claves de un objeto anidado de n profundidades como una matriz plana:
fuente
Resumen
Para obtener todas las claves de un Objeto que puede usar
Object.keys()
.Object.keys()
toma un objeto como argumento y devuelve una matriz de todas las claves.Ejemplo:
En el ejemplo anterior, almacenamos una matriz de claves en las claves const. Entonces podemos acceder fácilmente a la cantidad de propiedades en el objeto al verificar la longitud de la matriz de claves.
Obteniendo los valores con:
Object.values()
La función complementaria de
Object.keys()
esObject.values()
. Esta función toma un objeto como argumento y devuelve una matriz de valores. Por ejemplo:fuente
Si decides usar Underscore.js, será mejor que lo hagas
fuente