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

229
Visualizações
¿Cómo crear una matriz de elementos combinados a partir de 2 elementos correspondientes, cada uno de otra matriz adicional, utilizando (principalmente) métodos de matriz?

He convertido archivos de texto basados en CSV en matrices que contienen encabezados y filas, y ahora quiero convertirlos en la solución dada a continuación. ¿Alguien puede hacer esto usando métodos como map , reduce o lo que sea?

Las matrices que tengo son:

 let header = ['a', 'b', 'c', 'd']; let rows = ['1,2,3,4', '5,6,7,8', '9,0,1,2'];

El resultado que quiero es:

 [{ a: 1, b: 2, c: 3, d: 4, }, { a: 5, b: 6, c: 7, d: 8, }, { a: 9, b: 0, c: 1, d: 2, }]

Pude hacer esto usando for loop pero esa no era la solución apropiada para es6.

Arriba mencioné algunas matrices ficticias, en este momento el código real es:

 const recordReader = content => { let weatherRecords = []; let rows = content.split('\n'); let headers = rows.shift().split(','); for (let row = 0; row < rows.length; row++) { let weatherReading = {}; if (!rows[row]) { continue; } let record = rows[row].split(','); for (let column = 0; column < headers.length; column++) { weatherReading[headers[column]] = record[column]; } weatherRecords.push(weatherReading); } return weatherRecords; };
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Podría mapear las filas y reducir la fila a un objeto:

 const header = ['a', 'b', 'c', 'd']; const rows = ['1,2,3,4', '5,6,7,8', '9,0,1,2']; const result = rows.map((row) => row.split(',').reduce( (obj, cell, i) => ({ ...obj, [header[i]]: Number(cell), }), {} ) ); console.log(result)

about 4 years ago · Juan Pablo Isaza Relatório

0

con una combinación de map y reduce:

 const header = ['a', 'b', 'c', 'd']; const rows = ['1,2,3,4', '5,6,7,8', '9,0,1,2']; const res = rows.map(row => { const columns = row.split(','); return columns.reduce( (acc,cur,i) => ({...acc,[header[i]]:cur}) , {}) } ); console.log(res);

Esto admite una sola línea, pero creo que no está muy claro para ver lo que hace:

 const header = ['a', 'b', 'c', 'd']; const rows = ['1,2,3,4', '5,6,7,8', '9,0,1,2']; const res = rows.map(row => row.split(',').reduce( (acc,cur,i) => ({...acc,[header[i]]:cur}) , {})); console.log(res);

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede .map() sus elementos de rows a objetos. Para crear el objeto, puede tomar la cadena de números y dividirlos en una matriz, en la que luego usa .map() para tomar los valores numéricos y el encabezado asociado de los headers usando el índice del número actual ( i ) . Al colocarlos en una matriz de pares [key, value] , puede llamar a Object.fromEntries() para construir su objeto. El siguiente también usa el operador unario más ( + ) para convertir su dígito de cadena en un número:

 const header = ['a', 'b', 'c', 'd']; const rows = ['1,2,3,4', '5,6,7,8', '9,0,1,2']; const res = rows.map(item => Object.fromEntries(item.split(',').map((n, i) => [header[i], +n])) ); console.log(res);

Tenga en cuenta que lo anterior usa Object.fromEntries() que se introdujo después de ES6, puede usar Object.assign() para un enfoque similar, que es ES6:

 const header = ['a', 'b', 'c', 'd']; const rows = ['1,2,3,4', '5,6,7,8', '9,0,1,2']; const res = rows.map(item => Object.assign({}, ...item.split(',').map((n, i) => ({[header[i]]: +n}))) ); console.log(res);

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