Tengo problemas para eliminar propiedades sin claves en su valor.
obj = {person: {id: 1, name: 'isaac'}, location: {id: 1, name: 'UT'}, status: {id: 1, name: 'Active'}, empty: {} } for (key in obj) { if (Object.keys(obj.key).length == 0) { delete obj.key } }Al ejecutar este código en la consola de Chrome, aparece el error:
Uncaught TypeError: Cannot convert undefined or null to object at Function.keys (<anonymous>) at <anonymous>:2:16 (anonymous) @ VM13940:2Sé que esto proviene de Object.keys que reciben un valor nulo o indefinido.
No entiendo cómo a menos que esté pasando algo con el objeto Prototipo que no estoy viendo.
¡Ups! Te referías:
for (key in obj) { if (Object.keys(obj[key]).length == 0) { delete obj[key] } } obj.key es en realidad obj["key"] Pero quería acceder a la propiedad de obj cuyo nombre está almacenado en la variable key , que se expresa como obj[key] .
Está muy cerca, pero está buscando 'clave' como propiedad en su objeto. Si necesita usar una variable para hacer referencia a una clave de un objeto, debe usar [].
El siguiente código hará lo que está buscando lograr:
for (key in obj) { if (Object.keys(obj[key]).length == 0) { delete obj[key] } }