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

162
Vistas
¿Dividir matriz basada en el contenido del elemento?

Digamos que mis elementos se ven así:

 const words = [ 'duck foo bar', 'duck', 'duck bing ', 'bing', 'Bloop#12 goose', 'duck 12', 'duck goose', ... ]

Lo que me gustaría es dividir esto en partes donde 'ganso' es el elemento final en una parte:

 const words = [ [ 'duck foo bar', 'duck', 'duck bing', 'bing', 'Bloop#12 goose', ], [ 'duck 12', 'duck goose', ], [ ... ], ];

No hay regularidad en cuántos elementos preceden a un 'ganso', ni qué hay en cada elemento, excepto que 1) el ganso siempre es la última parte de un elemento, y 2) el ganso nunca aparece en ningún otro elemento además del que quiero un trozo para terminar (es decir, nunca obtengo 'goose foo', pero podría obtener 'duck goose')

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

0

Podría reducir la matriz y echar un vistazo a la cadena anterior y agregar una matriz al conjunto de resultados para un nuevo grupo.

 const words = ['duck foo bar', 'duck', 'duck bing ', 'bing', 'Bloop#12 goose', 'duck 12', 'duck goose'], separator = 'goose', groups = words.reduce((r, s, i, a) => { if (!i || a[i - 1].includes(separator)) r.push([]); r[r.length - 1].push(s); return r; }, []); console.log(groups);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Prueba esto. Esto debería hacer lo que estás buscando.

 const words = [ 'duck foo bar', 'duck', 'duck bing ', 'bing', 'Bloop#12 goose', 'duck 12', 'duck goose' ] const answer = [] let temp = [] for(let i = 0; i < words.length; i++){ if(words[i].includes('goose')){ temp.push(words[i]) answer.push(temp) temp = [] } else{ temp.push(words[i]) } } console.log(answer)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede lograr esto con un bucle forEach simple. En mi ejemplo a continuación, almaceno los valores primero temporalmente.

Luego empujo el trozo a la nueva matriz si la palabra contiene goose .

 const words = [ 'duck foo bar', 'duck', 'duck bing ', 'bing', 'Bloop#12 goose', 'duck 12', 'duck goose', 'abc' ] const n = [] let tmp = []; words.forEach((w) => { if (! w.includes('goose')) { tmp.push(w); } else { tmp.push(w); n.push(tmp); tmp = []; } }); console.log(n)

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