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

152
Visualizações
manipulación de objetos complejos

tengo una matriz:

 const arr = [ { countries : {countryCode :"US", value: true}, vendors: [{vendorName: 'TES', value: true}, {vendorName: 'HPEFS', value: true}] }, { countries : {countryCode :"CA", value: true}, vendors: [{vendorName: 'TES', value: true}, {vendorName: 'HPEFS', value: false}] } ]; expected result: [{vendor: "TES", countries: [US, CA]}, {vendor: "HPEFS", countries: [US]}]

Se agradece cualquier idea, gracias de antemano

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puede lograr fácilmente el resultado usando Map y forEach

 const arr = [ { countries: { countryCode: "US", value: true }, vendors: [ { vendorName: "TES", value: true }, { vendorName: "HPEFS", value: true }, ], }, { countries: { countryCode: "CA", value: true }, vendors: [ { vendorName: "TES", value: true }, { vendorName: "HPEFS", value: false }, ], }, ]; const map = new Map(); arr.forEach(({ countries, vendors }) => { const { countryCode, value } = countries; vendors.forEach((o) => { if (o.value) { !map.has(o.vendorName) ? map.set(o.vendorName, [countryCode]) : map.get(o.vendorName).push(countryCode); } }); }); const result = []; for (let [vendor, countries] of map) result.push({ vendor, countries }); console.log(result);
 /* This is not a part of answer. It is just to give the output full height. So IGNORE IT */ .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Relatório

0

Aquí está la solución:

 const arr = [ { countries: { countryCode: "US", value: true }, vendors: [{ vendorName: 'TES', value: true }, { vendorName: 'HPEFS', value: true }] }, { countries: { countryCode: "CA", value: true }, vendors: [{ vendorName: 'TES', value: true }, { vendorName: 'HPEFS', value: false }] } ]; // expected result: [{vendor: "TES", countries: [US, CA]}, {vendor: "HPEFS", countries: [US]}] const loookup = arr.reduce((acc, curr) => { curr.vendors.forEach(item => { if (item.value) { if (acc[item.vendorName] && !acc[item.vendorName].includes(curr.countries)) { acc[item.vendorName] = [...acc[item.vendorName], curr.countries.countryCode] } else { acc[item.vendorName] = [curr.countries.countryCode] } } }) return acc; }, {}); const result = Object.keys(loookup).map(key => { return { vendor: key, countries: loookup[key] } }) console.log(result)
 /* This is not a part of answer. It is just to give the output full height. So IGNORE IT */ .as-console-wrapper { max-height: 100% !important; top: 0; }

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