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

327
Visualizações
¿Cómo puedo extraer elementos de una matriz dentro de una matriz a esta matriz?

¿Cómo puedo extraer elementos de una matriz dentro de una matriz a esta matriz?

Lo que tengo es esto:

 const tableData = [ { display: '2022-03', column: 'data', detailList: [ { title: 'Quantity', value: 1, sourceId: null, }, { title: 'Price', value: 2, sourceId: null, }, { title: 'Weight', value: 3, sourceId: null, }, { title: 'income', value: 4, sourceId: null, }, ], }, { display: '2022-02', column: 'data', detailList: [ { title: 'Quantity', value: 7, sourceId: null, }, { title: 'Price', value: 6, sourceId: null, }, { title: 'Weight', value: 5, sourceId: null, }, { title: 'income', value: 4, sourceId: null, }, ], }, ];

Ahora quiero que se convierta en esto:

 res = [ { title: '2022-03', 'Quantity': '1', 'Price': '2', 'Weight': '3', 'income': '4', }, { title: '2022-02', 'Quantity': '7', 'Price': '6', 'Weight': '5', 'income': '4', }, ];

¿Cuál es la mejor manera de hacerlo?

Estoy tratando de crear una nueva matriz afuera y uso dos .map() para hacerlo. Pero parece que no se puede leer.

¿Puede alguien darme una mejor solución que use algunas características de ES6 que lo hagan parecer más legible?

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

0

Debe asignar el resultado de map() directamente a res , en lugar de llamar a push() dentro del mapa.

Puede usar Object.fromEntries() para crear el objeto desde el mapa interno.

La desestructuración y la sintaxis extendida pueden simplificar la forma en que accede a las propiedades y crea el objeto resultante.

 const tableData = [{ display: '2022-03', column: 'data', detailList: [{ title: 'Quantity', value: 1, sourceId: null, }, { title: 'Price', value: 2, sourceId: null, }, { title: 'Weight', value: 3, sourceId: null, }, { title: 'income', value: 4, sourceId: null, }, ], }, { display: '2022-02', column: 'data', detailList: [{ title: 'Quantity', value: 7, sourceId: null, }, { title: 'Price', value: 6, sourceId: null, }, { title: 'Weight', value: 5, sourceId: null, }, { title: 'income', value: 4, sourceId: null, }, ], }, ]; let res = tableData.map(({ display, detailList }) => ({ title: display, ...Object.fromEntries(detailList.map(({ title, value }) => [title, value === null ? '-' : value])) })); console.log(res);

about 4 years ago · Juan Pablo Isaza Relatório

0

const res = tableData.map(({ display, detailList}) => { const obj = { title: display, } detailList.forEach(el => obj[el.title] = el.value); return obj; })
about 4 years ago · Juan Pablo Isaza Relatório

0

Esta puede ser una posible solución para lograr el objetivo deseado.

Fragmento de código

 const transformArray = arr => arr.map( // iterate using "map" ({display : title, detailList}) => ({ // de-structure, and rename title, ...( detailList.reduce( // iterate using "reduce" (fin, {title, value}) => ({ // de-structure to access title, value ...fin, [title]: value // may add "value" is null check here }), {} // the "fin" object is initialized to empty ) ) }) ); const tableData = [ { display: '2022-03', column: 'data', detailList: [ { title: 'Quantity', value: 1, sourceId: null, }, { title: 'Price', value: 2, sourceId: null, }, { title: 'Weight', value: 3, sourceId: null, }, { title: 'income', value: 4, sourceId: null, }, ], }, { display: '2022-02', column: 'data', detailList: [ { title: 'Quantity', value: 7, sourceId: null, }, { title: 'Price', value: 6, sourceId: null, }, { title: 'Weight', value: 5, sourceId: null, }, { title: 'income', value: 4, sourceId: null, }, ], }, ]; console.log(transformArray(tableData));
 .as-console-wrapper { max-height: 100% !important; top: 0; }

Explicación

Los comentarios en línea explican los pasos involucrados.

NOTAS

Esta solución utiliza:

  • '.mapa()`
  • .reduce()
  • desestructurar y renombrar ( display se renombra como title
  • funciones de flecha
  • ... difundir para realizar una copia superficial
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