Tengo un objeto JavaScript como el siguiente:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
Ahora quiero recorrer todos los elementos p
(p1
, p2
, p3
...) y obtener sus claves y valores. ¿Cómo puedo hacerlo?
Puedo modificar el objeto JavaScript si es necesario. Mi objetivo final es hacer un bucle a través de algunos pares clave-valor y si es posible quiero evitar el uso de eval
.
Puedes utilizar el bucle for-in
como han mostrado otros. Sin embargo, también tienes que asegurarte de que la clave que obtienes es una propiedad real de un objeto, y no proviene del prototipo.
Aquí está el fragmento:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
for (var key in p) {
if (p.hasOwnProperty(key)) {
console.log(key + " -> " + p[key]);
}
}
Para con la alternativa Object.keys():
var p = {
0: "value1",
"b": "value2",
key: "value3"
};
for (var key of Object.keys(p)) {
console.log(key + " -> " + p[key])
}
Fíjate en el uso de for-of
en lugar de for-in
, si no se usa devolverá undefined en las propiedades con nombre, y Object.keys() asegura el uso sólo de las propiedades propias del objeto sin las propiedades de toda la cadena de prototipos
for(key in p) {
alert( p[key] );
}
Nota: puedes hacer esto sobre arrays, pero también iterarás sobre la longitud
y otras propiedades.