Hice este código para sumar la cantidad total de propiedades en un objeto anidado pero no funciona bien, ¿pueden ayudarme por favor?
var obj = { a: { a1: 10, a2: 'Emily', a3: {E: 'm', i: 'l', y: {a: true}} }, b: 2, c: [1, {a: 1}, 'Emily'] } var i = 0 var countProps = function (obj) { for (const key in obj) { if ( obj[key].hasOwnProperty(key) ) i++; } if ( typeof obj[key] === 'object' ) { i++; countProps( obj[key] ); } } return i; };Ver fragmento. if ( obj[key].hasOwnProperty(key) ) es la parte que está desactivada, está mirando al niño y verificando si también tiene la misma clave.
var obj = { a: { a1: 10, a2: 'Emily', a3: {E: 'm', i: 'l', y: {a: true}} }, b: 2, c: [1, {a: 1}, 'Emily'] } let i = 0; var countProps = function (obj) { for (const key in obj) { if ( typeof obj[key] === 'object' ) { i++; countProps( obj[key] ); } else { i++; } } return i; }; console.log(countProps(obj));Acabo de resolver este problema, aquí está la respuesta :)
var i = 0 var countProps = function (obj) { for (const key in obj) { if ( obj[key] instanceof Object && !Array.isArray(obj[key]) ) { i++; countProps( obj[key] ); } else { i++; } } return i; };