¿Por qué no es posible usar objetos en forma de bucles? ¿O es un error del navegador? Este código no funciona en Chrome 42, diciendo que undefined no es una función:
test = { first: "one"} for(var item of test) { console.log(item) }El bucle for..of solo admite objetos iterables como matrices, no objetos.
Para iterar sobre los valores de un objeto, use:
for (var key in test) { var item = test[key]; }Puedes usar esta sintaxis:
const myObject = { first: "one", second: "two", }; for (const [key, value] of Object.entries(myObject)) { console.log(key, value); // first one, second two } Sin embargo, Object.entries tiene poco apoyo en este momento no funciona en IE o iOS Safari . lo harás probablemente podría necesitar un polyfill. Consulte https://caniuse.com/mdn-javascript_builtins_object_entries para obtener la última primicia.
Consulte también Object.keys para iterar solo las claves u Object.values para solo los valores.
Si está almacenando datos en un almacén de clave-valor, use Map , que está diseñado explícitamente para este propósito.
Sin embargo, si tiene que usar un objeto, ES2017 (ES8) le permite usar Object.values :
const foo = { a: 'foo', z: 'bar', m: 'baz' }; for (let value of Object.values(foo)) { console.log(value); } Si eso aún no es compatible, use un polyfill: versión alternativa para Object.values()
Y, por último, si admite un entorno antiguo que no admite esta sintaxis, deberá recurrir al uso de forEach y Object.keys :
var obj = { a: 'foo', z: 'bar', m: 'baz' }; Object.keys(obj).forEach(function (prop) { var value = obj[prop]; console.log(value); });