Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

232
Vistas
How to reduce an array of objects with two properties into two arrays, one for each property?

I have an array of objects with two properties: canais and topicos:

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

I want to split into two array of strings called canais and topicos:

canais : [ "canal1" , "canal2", "canal3" ];
topicos: [ "topico1" , "topico2", "topico3" ];
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

You can do

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

0

You could do this in multiple ways:

  1. Map each element to a 2-element array [canais, topicos] and then transpose the result to get two arrays (here original is your array):

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

    See also: Transposing a 2D-array in JavaScript which is the origin of the transpose function above.

  2. Use a forEach loop and accumulate:

    const canais = []
    const topicos = []
    
    original.forEach(el => {
        canais.push(el.canais)
        topicos.push(el.topicos)
    })
    
  3. Normal for loop and accumulate:

    const allCanais = []
    const allTopicos = []
    
    for (const {canais, topicos} of original) {
        allCanais.push(canais)
        allTopicos.push(topicos)
    }
    
  4. Map two times (first extract all el.canais then all el.topicos), though this iterates twice over the data which is probably unneeded.

about 4 years ago · Juan Pablo Isaza Denunciar

0

If you need it to be dynamic, you can use a nested for loop to go through each item and create/add to arrays based on the key, then use an object to store each array of values.

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda