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

215
Visualizações
Dividir una cadena en una matriz según el primero y el último

Tengo esta matriz: -

var a = ['DL1,C1,C5,C6','M4,DL3-7,B1-5']

Y quiero dividirlos como

[DL1,C1,C5,C6,M4,DL3,DL4,DL5,DL6,DL7,B1,B2,B3,B4,B5]

Para que DL3-7 o DL3-DL7 este Split DL3,DL4,DL5,DL6,DL7

La razón por la que estoy haciendo esto es porque quiero bloquear la entrada duplicada como DL3 no debería venir en ningún otro lado, estoy tratando de que los bucles hagan esto, solo quiero saber si hay alguna forma más simple de hacerlo y verificar si hay duplicación. después.

Gracias

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Tienes que dividir tus problemas en tres partes:

  1. obtener valores delimitados por comas en diferentes elementos de matriz
  2. resolviendo "DL3-7" a "DL3", "DL4"...
  3. eliminando duplicados

Una vez que analiza el problema, es mucho más fácil manejarlos uno por uno. El código es bastante legible, avíseme si hay algo difícil de entender.

 const a = ['DL1,C1,C5,C6', 'M4,DL3-7,B1-5'] //this will split all comma delimited values const commaDelimit = a.map(item => item.split(',')).flat(); console.log("Separate values by comma: ") console.log(commaDelimit); //this will turn the ranges into individual items //this does not account for if the number is bigger than 9. //you can try doing this part yourself if you need to, should be a good learning exercise. const resolveRange = commaDelimit.map(item => { if (item.includes('-')) { const pos = item.indexOf('-'); const beginning = Number(item.charAt(pos - 1)); const end = Number(item.charAt(pos + 1)) + 1; const toReturn = []; const prependString = item.substring(0, pos - 1); for (let i = beginning; i < end; i++) { toReturn.push(`${prependString}${i}`) } return toReturn; } return item; }).flat(); console.log("Change 'DL3-7' to DL3, DL4 and so on: ") console.log(resolveRange); //this will get rid of duplicates const uniques = [...new Set(resolveRange)]; console.log("Remove duplicates: ") console.log(uniques);

about 4 years ago · Juan Pablo Isaza Relatório

0

Cree una matriz con esa longitud, itere y transforme, acabo de escribir la parte más desafiante:

 function splitRange(range) { let a = range.split('-'); if (a.length < 2) return [range]; const baseString = (a[0].match(/[az AZ]/g))?.join(''); const baseNumber = +((a[0].match(/\d+/))?.shift()); return Array.from({length: +a.pop().match(/\d+/) - baseNumber + 1}).map((_,i)=>`${baseString}${i+baseNumber}`); } const s='DL1,C1,C5,C6,M4,DL3-7,B1-5'; console.log( s.split(',').map(item=>splitRange(item)).flat() );

about 4 years ago · Juan Pablo Isaza Relatório

0

Básicamente, @cSharp ha explicado el concepto de transformación de datos al resultado deseado.

  1. Dividir por coma.

  2. Trabaje con expresiones regulares para transformar el valor del rango y agregarlo a la matriz. Patrón Regex y datos de prueba

  3. Distinguir el valor de la matriz.

 var a = [' DL1,C1,C5,C6','M4,DL3-7,B1-5']; var formatteds = a.reduce((previous, current) => { var splits = current.trim().split(','); var rangedSplits = splits.reduce((prev, cur) => { var pattern = new RegExp(/([AZ]*)(\d)-[AZ]*(\d)/); var match = pattern.exec(cur); if (match) { // Pattern 1: ['DL3-7', 'DL', '3', '7'] // Pattern 2: ['DL3-DL7', 'DL', '3', '7'] var startIndex = parseInt(match[2].toString()); var endIndex = parseInt(match[3].toString()); var arr = []; for (let i = startIndex; i <= endIndex; i++) { arr.push(match[1].toString() + i); } prev = prev.concat(arr); } else { prev = prev.concat([cur]); } return prev; }, []); previous = previous.concat(rangedSplits); return previous; }, []); var result = formatteds.filter((x, i, array) => array.indexOf(x) === i); console.log(result);

about 4 years ago · Juan Pablo Isaza 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