Tengo un objeto que contiene otros objetos, así como algunos números que no quiero.
Quiero convertir el objeto en una matriz de objetos y eliminar los números.
un ejemplo:
APORTE
const object = { john: { instrument: 'violin', age: 26 }, bob: { instrument: 'guitar', age: 32 }, numberIDontWant: 2, flynn: { instrument: 'piano', age: 3 }, numberIDontWant2: 9 }PRODUCCIÓN
[ { name: 'john', instrument: 'violin', age: 26 }, { name: 'bob', instrument: 'guitar', age: 32 }, { name: 'flynn', instrument: 'piano', age: 20 } ]Alguien me puede ayudar con eso?
Podrías usar Object.entries y .map :
console.log(Object.entries({ john: { instrument: 'violin', age: 26 }, bob: { instrument: 'guitar', age: 32 }, numberIDontWant: 2, flynn: { instrument: 'piano', age: 3 }, numberIDontWant2: 9 }).map(([k,v]) => typeof v === 'object' ? ({...v, name: k}) : undefined).filter(i => i))Lo más probable es que desee iterar sobre Object.entries() para tener acceso a la clave (el name ) y el valor. No está 100% claro cuál es el criterio para qué valores incluir/excluir, pero una forma sería incluir solo los valores que tienen un typeof de igual a 'object' .
function objectToArray(obj) { let arr = []; for (let [name, value] of Object.entries(obj)) { if (typeof value === "object") { arr.push({ ...value, name, }); } } return arr; } console.log( objectToArray({ john: { instrument: "violin", age: 26, }, bob: { instrument: "guitar", age: 32, }, numberIDontWant: 2, flynn: { instrument: "piano", age: 3, }, numberIDontWant2: 9, }) );Podrías usar map y filter
const data = { john: { instrument: 'violin', age: 26 }, bob: { instrument: 'guitar', age: 32 }, numberIDontWant: 2, flynn: { instrument: 'piano', age: 3 }, numberIDontWant2: 9 } const result = Object.entries(data).map(([k, v]) => { if (typeof v === "object") return { ...v, name: k } }).filter(x => x); console.log(result);