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

127
Vistas
Usando reducir, a partir de una matriz de objetos, cree un conjunto de elementos dentro de los atributos de la matriz de objetos

Dada la siguiente matriz:

 foos = [ { id: 0, bar: ['a','b','c'] }, { id: 1, bar: ['a','b','d'] }, { id: 2, bar: ['a','c'] }, ]

Usando reduce , ¿cómo puedo lograr lo siguiente?:

bars == ['a','b','c','d']

He intentado:

foo.reduce((bars, foo) => bars.add(foo.bar), new Set())

Pero da como resultado un conjunto de objetos:

Set { {0: 'a', 1: 'b', 2: 'c'}, {0: 'a', 1: 'b', 2: 'd'}{0: 'a', 1: 'c'}}

Y:

foos.reduce((bars, foo) => foo.bar.forEach(bar => bars.add(bar)), new Set())

Pero forEach no tiene acceso al conjunto de bars .

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

En lugar de crear un Set dentro de tu reduce . Podría simplemente reducir todas las matrices de bar en una sola y pasarla a su constructor de conjuntos.

 const foos = [ { id: 0, bar: ['a','b','c'] }, { id: 1, bar: ['a','b','d'] }, { id: 2, bar: ['a','c'] }, ]; const bars = new Set(foos.reduce((all, foo) => [...all, ...foo.bar], [])); console.log(...bars);

Con mapa plano :

 const foos = [ { id: 0, bar: ['a','b','c'] }, { id: 1, bar: ['a','b','d'] }, { id: 2, bar: ['a','c'] }, ]; const bars = new Set(foos.flatMap(foo => foo.bar)); console.log(...bars);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede concat la propiedad de la bar en el acumulador y usar el método .filter para hacer que los valores sean únicos:

 const foos = [{ id: 0, bar: ['a', 'b', 'c'] }, { id: 1, bar: ['a', 'b', 'd'] }, { id: 2, bar: ['a', 'c'] }, ]; const bars = foos .reduce((acc, itm) => acc.concat(itm.bar), []) .filter((i, x, s) => s.indexOf(i) === x); console.log(...bars);

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