Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

124
Visualizações
Agregue otra propiedad cuando coincida con el ID de lista y el ID de sublista en objetos de matriz anidados

API inicial tiene esta lista

 const main = [ { id: 1, name: 'Folder 1', list: [ { listId: 3, listName: 'List ID 3', subList: [ { id: 1, subListName: 'Sub List ID 1' }, { id: 2, subListName: 'Sub List ID 2' }, ], }, ], }, { id: 2, name: 'Folder 2', list: [ { listId: 1, listName: 'List ID 1', subList: [ { id: 1, subListName: 'Sub List ID 1' }, { id: 2, subListName: 'Sub List ID 2' }, ], }, { listId: 2, listName: 'List ID 2', subList: [{ id: 2, subListName: 'Sub List ID 2' }], }, ], }, ]

Pero estoy creando una estructura diferente que parece

 const folders = [ { id: 1, name: 'Folder 1', list: [ { listId: 3, subListId: 1 }, { listId: 3, subListId: 2 }, ], }, { id: 2, name: 'Folder 2', list: [ { listId: 1, subListId: 1 }, { listId: 2, subListId: 3 }, ], }, ]

Necesito hacer coincidir esos ID y agregar listName y subListName a esos objetos anidados.

Versión final como debería verse

 const final = [ { id: 1, name: 'Folder 1', list: [ { listId: 3, listName: 'List ID 3', subListId: 1, subListName: 'Sub List ID 1' }, { listId: 3, listName: 'List ID 3', subListId: 2, subListName: 'Sub List ID 2' }, ], }, { id: 2, name: 'Folder 2', list: [ { listId: 1, listName: 'List ID 1', subListId: 1, subListName: 'Sub List ID 1' }, { listId: 2, listName: 'List ID 2', subListId: 2, subListName: 'Sub List ID 2' }, ], }, ]

He intentado hacer forloops y empujar a una nueva matriz, pero creo que esto se está complicando, así que busco una forma más limpia

 const t5 = [] for (const el of folders) { const t4 = [] for (const _el of el.list) { let listId let subListId let listname let subListName for (const i of main) { for (const _i of i.list) { if (_i.listId === _el.listId) { for (const __i of _i.subList) { if (__i.id === _el.subListId) { console.log('🚀 ~ __i', _i) } } } } } if (_el.listId === listId && _el.subListId === 1) { t4.push({ ..._el, listname: listname, subListName: subListName, }) } } t5.push({ ...el, list: t4 }) } console.log('🚀 ~ t5', t5)
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

prueba esto

 const newArray = []; for (let item of array) { const object = { id: item.id, name: item.name, list: [] } for (let list of item.list) { object.list.push(...list.subList.map(subList => ({ listId: list.listId, listName: list.listName, subListId: subList.id, subListName: subList.subListName }))) } newArray.push(object); }
about 4 years ago · Juan Pablo Isaza Relatório

0

Use Array.reduce para eso.

 const main = [ { id: 1, name: 'Folder 1', list: [ { listId: 3, listName: 'List ID 3', subList: [ { id: 1, subListName: 'Sub List ID 1' }, { id: 2, subListName: 'Sub List ID 2' }, ], }, ], }, { id: 2, name: 'Folder 2', list: [ { listId: 1, listName: 'List ID 1', subList: [ { id: 1, subListName: 'Sub List ID 1' }, { id: 2, subListName: 'Sub List ID 2' }, ], }, { listId: 2, listName: 'List ID 2', subList: [{ id: 2, subListName: 'Sub List ID 2' }], }, ], }, ] const folders = [ { id: 1, name: 'Folder 1', list: [ { listId: 3, subListId: 1 }, { listId: 3, subListId: 2 }, ], }, { id: 2, name: 'Folder 2', list: [ { listId: 1, subListId: 1 }, { listId: 2, subListId: 2 }, ], }, ]; const final = folders.reduce((acc, curr) => { const node = { id: curr.id, name: curr.name, }; // Find the node from the main array with id from folders node id const mainNode = main.find((item) => item.id === node.id); node.list = curr.list.map((listNode) => { // From the node found from main array, get the list node const listItem = mainNode.list.find((item) => item.listId === listNode.listId); // From the list node find the sublist node with id const subListItem = listItem ? listItem.subList.find((item) => item.id === listNode.subListId) : null; return { listId: listItem.listId, listName: listItem.listName, subListId: subListItem.id, subListName: subListItem.subListName, } }); acc.push(node); return acc; }, []); console.log(final);

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda