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

168
Views
¿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 answers
Answer question

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 Report

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 Report

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 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!