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

258
Visualizações
¿Cómo hacer una matriz a partir de dos matrices de columnas y filas en JS?

Tengo un formato de datos json:
[{'note':'n1','subject':'subject1','value':10},{'note':'n3','subject':'subject2','value':19}];
a partir de eso, generé dos matrices, una para columnas de cols y otra para rows

 let notes = [{'note':'n1','subject':'subject1','value':10},{'note':'n3','subject':'subject2','value':19}]; let cols = ['n1', 'n2', 'n3']; let rows = ['subject1', 'subject2']; let matrix = Array(cols.length).fill(Array(rows.length).fill(0)); for(const x of notes){ let {note, subject, value} = x; matrix[cols.indexOf(note)][rows.indexOf(subject)] = note; } console.log(matrix)

Resultado Esperado:

 [[10,0,0],[0,0,19]]

Pero mi objetivo es representarlo como una tabla HTML que se ve así:

Asunto\Nota Nota 1 Nota 2 Nota 3
Sujeto1 10 0 0
subj2 0 0 19

¿Cómo podría hacer eso? ¡Cualquier sugerencia o ayuda es muy apreciada!

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

0

Puedo pensar en un par de maneras de hacerlo. Una forma sería forEach columnas y rows usando cols y encontrar el valor coincidente en las notes o devolver 0 para construir la matriz de la siguiente manera:

 let notes = [ {'note':'n1','subject':'subject1','value':10}, {'note':'n3','subject':'subject2','value':19} ] let cols = ['n1', 'n2', 'n3'] let rows = ['subject1', 'subject2'] let matrix = [] rows.forEach(row => { let newRow = [] cols.forEach(col => { newRow.push(notes.find(n => n.note === col && n.subject === row)?.value || 0) }) matrix.push(newRow) }) console.log(matrix)

Otro método podría ser usar reduce para recorrer cols y rows para obtener su matriz:

 let notes = [ {'note':'n1','subject':'subject1','value':10}, {'note':'n3','subject':'subject2','value':19} ] let cols = ['n1', 'n2', 'n3'] let rows = ['subject1', 'subject2'] let matrix = rows.reduce((accRow, row) => { accRow.push(cols.reduce((accCol, col) => { accCol.push(notes.find(n => n.note === col && n.subject === row)?.value || 0) return accCol }, [])) return accRow }, []) console.log(matrix)

about 4 years ago · Juan Pablo Isaza Relatório

0

Estás en el camino correcto. Solo algunos puntos:

  • Su intención es declarar y crear una matriz 2D, pero ese no es realmente el caso
  • Tienes rows y columns mezcladas
  • En lugar de = note , debe tener = value .

 let notes = [{'note':'n1','subject':'subject1','value':10},{'note':'n3','subject':'subject2','value':19}]; let cols = ['n1', 'n2', 'n3']; let rows = ['subject1', 'subject2']; let matrix = Array(rows.length).fill().map(() => Array(cols.length).fill(0)); for(const x of notes) { let {note, subject, value} = x; matrix[rows.indexOf(subject)][cols.indexOf(note)] = value; } console.log(matrix)

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