Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

221
Views
¿Cómo reducir una matriz de objetos con dos propiedades en dos matrices, una para cada propiedad?

Tengo una matriz de objetos con dos propiedades: canais y topicos :

 channel: Array(3) 0: {canais: 'canal1', topicos: 'topico1'} 1: {canais: 'canal2', topicos: 'topico2'} 2: {canais: 'canal3', topicos: 'topico3'}

Quiero dividir en dos matrices de cadenas llamadas canais y topicos:

 canais : [ "canal1" , "canal2", "canal3" ]; topicos: [ "topico1" , "topico2", "topico3" ];
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Tu puedes hacer

 const canais = channel.map(item => item.canais) const topicos = channel.map(item => item.topicos)
about 4 years ago · Juan Pablo Isaza Report

0

Podrías hacer esto de varias maneras:

  1. Asigne cada elemento a una matriz de 2 elementos [canais, topicos] y luego transponga el resultado para obtener dos matrices (aquí el original es su matriz):

     const transpose = arr => arr[0].map((x, i) => arr.map(x => x[i])) const [canais, topicos] = transpose(original.map(a => [a.canais, a.topicos]))

    Ver también: Transposición de una matriz 2D en JavaScript, que es el origen de la función de transpose anterior.

  2. Use un bucle forEach y acumule:

     const canais = [] const topicos = [] original.forEach(el => { canais.push(el.canais) topicos.push(el.topicos) })
  3. Normal for bucle y acumular:

     const allCanais = [] const allTopicos = [] for (const {canais, topicos} of original) { allCanais.push(canais) allTopicos.push(topicos) }
  4. Asigne dos veces (primero extraiga todos los el.canais y luego todos los el.topicos ), aunque esto itera dos veces sobre los datos, lo que probablemente no sea necesario.

about 4 years ago · Juan Pablo Isaza Report

0

Si necesita que sea dinámico, puede usar un bucle for anidado para recorrer cada elemento y crear/agregar matrices en función de la clave, luego use un objeto para almacenar cada matriz de valores.

 let channelNames = {}; for(let c of channel){ for(let key in c){ if(!channelNames[key]) channelNames[key] = []; channelNames[key].push(i[key]); } }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!