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
¿Cómo obtener un desplazamiento superpuesto y crear un subconjunto a partir de una cadena en JavaScript?

Tengo un texto y una matriz de bloques que tienen un objeto que representa el desplazamiento del desplazamiento inicial y final de la cadena. Quiero hacer un bloque único a partir de esto y agregarlo en función del desplazamiento más grande. una muestra está abajo.

 let text = "announcing improvements to the GitHub Actions “New Workflow” experience. Now, when you want to create";
 let blocks = [ { word: "GitHub", start: "31", end: "37", }, { word: "Now", start: "73", end: "76", }, { word: "GitHub Actions", start: "31", end: "45", }, { word: "the GitHub Actions “New Workflow” experience.", start: "27", end: "72", }, ];

en el ejemplo anterior "la experiencia de "Nuevo flujo de trabajo" de GitHub Actions". es la palabra más grande que tiene "GitHub" y "Acciones de GitHub" como subconjunto, por lo que en el conjunto de desplazamiento final de inicio será con el más grande y los otros dos serán parte de la división


Rendimiento esperado

 let finalSplit = [ { start: "73", end: "76", splits: [ { word: "Now", start: "73", end: "76", }, ], }, { start: "27", end: "72", splits: [ { word: "GitHub Actions", start: "31", end: "45", }, { word: "the GitHub Actions “New Workflow” experience.", start: "27", end: "72", }, { word: "GitHub", start: "31", end: "37", }, ], }, ];
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puede utilizar la agrupación por enfoque hash:

 const blocks = [{word: "GitHub", start: "31", end: "37"},{word: "Now", start: "73", end: "76"},{word: "GitHub Actions", start: "31", end: "45"},{word: "the GitHub Actions “New Workflow” experience.", start: "27", end: "72"}]; const reduced = blocks.reduce((acc, block) => { const [{ start, end }] = blocks .filter((s) => (s.start <= block.start) && (s.end >= block.end)) .sort((s1, s2) => (s2.end - s2.start) - (s1.end - s1.start)); const hash = `${start}-${end}`; acc[hash] = acc[hash] ? { ...acc[hash], splits: [...acc[hash].splits, block] } : { start, end, splits: [block] }; return acc; }, {}); const result = Object.values(reduced); console.log(result)
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Santiago Trujillo 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