Estoy tratando de crear una matriz de objetos a partir de una matriz de objetos que tiene matrices anidadas. Las matrices anidadas se sustituirán por el nombre de la clave seguido de un punto:
por ejemplo:
const data = [ id: 5, name: "Something", obj: { lower: True, higher: False } ] result = ["id", "name", "obj.lower", "obj.higher"] Podría administrar las claves y los valores anidados, pero parece que no puedo obtener los objs de la matriz.
Por ejemplo (resultado esperado):
const data = [ id: 5, name: "Something", obj: { lower: True, higher: False } ] const newData = [{id: 5}, {name: "Something"}, {obj.lower: True}, {obj.higher: False}]he intentado:
getValues = object => Object.entries(object).flatMap(([k, v]) => { if (typeof v !== "object") { return {[k]: v} } return v && typeof v === 'object' ? this.getKeys(v).map(s => `${k}.${s}`) : [k]; });Compararé esta matriz filtrada de objetos con datos de usuario que se ven así:
export const requiredKeys = { data: { id: null, status: null, summary: null, // "updated_by.id": null, // "updated_by.firstname": null, // "updated_by.lastname": null, // "updated_by.username": null, // "updated_by.blocked": null, // "pillars.pillarsType": null, // "student.created_by": null, // state: null,Puede asignar los valores/clave o los pares de objetos anidados. A partir de estas entradas se obtienen nuevos objetos.
const getEntries = object => Object .entries(object) .flatMap(([k, v]) => v && typeof v === 'object' ? getEntries(v).map(([l, v]) => [`${k}.${l}`, v]) : [[k, v]] ), data = { id: 1, item: "Item 001", obj: { name: 'Nilton001', message: "Free001", obj2: { test: "test001" } } }, result = getEntries(data).map(pair => Object.fromEntries([pair])); console.log(result); .as-console-wrapper { max-height: 100% !important; top: 0; }