recorrer objetos objeto keys for array agregar javascript lodash

javascript - objetos - object.keys foreach



Bucle a través de las propiedades en el objeto JavaScript con Lodash (5)

En ES6, también es posible iterar sobre los valores de un objeto usando el ciclo for..of . Sin embargo, esto no funciona de inmediato para objetos JavaScript, ya que debe definir una propiedad @@ iterator en el objeto. Esto funciona de la siguiente manera:

  • El ciclo for..of pide al "objeto que se iterará" (lo llamaremos obj1 para un objeto iterador. El ciclo itera sobre obj1 llamando sucesivamente al método next () en el objeto iterador proporcionado y utilizando el valor devuelto como valor para cada iteración del ciclo.
  • El objeto iterador se obtiene al invocar la función definida en la propiedad @@ iterator, o la propiedad Symbol.iterator, de obj1. Esta es la función que debe definir usted mismo, y debe devolver un objeto iterador

Aquí hay un ejemplo:

const obj1 = { a: 5, b: "hello", [Symbol.iterator]: function() { const thisObj = this; let index = 0; return { next() { let keys = Object.keys(thisObj); return { value: thisObj[keys[index++]], done: (index > keys.length) }; } }; } };

Ahora podemos usar el bucle for..of :

for (val of obj1) { console.log(val); } // 5 hello

¿Es posible recorrer las propiedades en un objeto JavaScript? Por ejemplo, tengo un objeto JavaScript definido como este:

myObject.options = { property1: ''value 1'', property2: ''value 2'' };

Las propiedades se agregarán dinámicamente a este objeto. ¿Hay alguna manera de que simplemente revise y verifique si existe una propiedad? ¿Si es así, cómo?


Por su deseo declarado de "verificar si una propiedad existe", puede usar directamente lo que tiene Lo-Dash.

var exists = _.has(myObject, propertyNameToCheck);


Sí, puedes y lodash no es necesario ... es decir

for (var key in myObject.options) { // check also if property is not inherited from prototype if (myObject.options.hasOwnProperty(key)) { var value = myObject.options[key]; } }

Editar : la respuesta aceptada ( _.forOwn() ) debería ser https://.com/a/21311045/528262


Sería útil entender por qué necesita hacer esto con lodash. Si solo desea comprobar si existe una clave en un objeto, no necesita lodash.

myObject.options.hasOwnProperty(''property'');

Si está buscando para ver si existe un valor, puede usar _.invert

_.invert(myObject.options)[value]


Use _.forOwn() .

_.forOwn(obj, function(value, key) { } );

_.forOwn()

Tenga en cuenta que forOwn comprueba hasOwnProperty , como normalmente debe hacer al pasar por encima de las propiedades de un objeto. forIn no hace este control.