Por supuesto, Object.keys()
es el mejor manera de conseguir las llaves de un objeto. Si no está disponible en su entorno, puede ser trivial utilizando código como en su ejemplo (excepto que debe tener en cuenta que su ciclo iterará sobre todas las propiedades de la cadena del prototipo, a diferencia del comportamiento de Object.keys()
) .
Sin embargo, el código de ejemplo ...
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [];
for (var key in foo) {
keys.push(key);
}
jsFiddle.
... podría ser modificado. Puede hacer la tarea directamente en la parte variable.
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [], i = 0;
for (keys[i++] in foo) {}
jsFiddle.
Por supuesto, este comportamiento es diferente al que realmente hace Object.keys()
(jsFiddle). Simplemente puede usar el shim on the MDN documentation.
Además de agregar 'if (foo.hasOwnProperty (key))', eso es lo que haría. O bien, use '$ .map'. –
Oh, para un one-liner Pythonic, aunque ... – Richard
una vieja pregunta por lo que no vale la pena una respuesta completa, pero para aquellos que quieran violín ... http://jsfiddle.net/LR5D9/3/ esta solución se ocupa de el problema de las declaraciones de prototipos estropeando 'para var en x' loops – unsynchronized