Iteraciones sobre objetos (JavaScript)

Supongamos que tenemos un objeto con los siguientes pares clave-valor:

var objeto = {
  "p1": "value1",
  "p2": "value2",
  "p3": "value3"
};

Se puede recorrer con los siguientes métodos:

for-in: Se recorre el objeto de manera muy similar al foreach de PHP. Debe preguntar si la clave actualmente recogida es  propiedad propia (y no heredada) del objeto que se está recorriendo; para no confundir claves del objeto con propiedades del prototipo (prototype) Object.

for (var key in objeto) {
  if (!objeto.hasOwnProperty(key)) continue;
  console.log(key + " -> " + objeto[key]);
  //Output: p1 -> value1
}

for-keys: extraer el array de claves del objeto y recorrer dicho array.

var keys = Object.keys(objeto);
for(var i = 0; i < keys.length; i++){
  var idAtributo = keys[i];
  var atributo = objeto[idAtributo];
  console.log(idAtributo + " -> " + atributo);
  //Output: p1 -> value1
}

foreach: es una función propia de los arrays; sencillamente se extraen las claves el objeto a recorrer y sobre dicho array de claves se realiza el foreach. No es muy óptimo (en cuanto a procesos/segundo) y además no puede detenerse el bucle a menos que se lance una excepción dentro del mismo. No está pensado para hacer iteraciones en un el sentido tradicional.

Object.keys(objeto).forEach( function(valor, indice, objeto) {
  console.log(indice + " -> " + valor);
});

Créditos de fuentes externas:

Referencias:

Deja una respuesta