Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

240
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda