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

238
Visualizações
Encuentre la cadena duplicada en la matriz y agregue un número creciente al final

Estoy trabajando en javascript y tratando de encontrar un algoritmo para agregar números incrementales a las cadenas, en función de las cadenas existentes en el programa.

Aporte:

 ['Untitled Form', 'Untitled Form - 1', 'Untitled Form - 5', 'Untitled Form - 3', 'Untitled Form - 4', "Untitled Form"];

Supongamos que el usuario desea agregar otra cadena a esta lista y ha seleccionado "Formulario sin título" como la cadena para agregar. Entonces, dada la entrada y la lista existente, el algoritmo buscaría en la lista para verificar si falta algún número incremental, por ejemplo, en el código anterior falta el "Formulario sin título - 2", debería devolver "Formulario sin título - 2" como la nueva cadena a agregar.

Producción:

 ['Untitled Form', 'Untitled Form - 1', 'Untitled Form - 5', 'Untitled Form - 3', 'Untitled Form - 4', "Untitled Form - 2"];

Es la misma función que en el Explorador de Windows, donde sigue agregando nuevas carpetas ("Nueva carpeta (1)", "Nueva carpeta (2)" y así sucesivamente)

Tengo una solución para este problema, pero creo que no es muy eficiente y el algoritmo también busca el número más alto y agrega el número incremental después de eso es "Formulario sin título - 6".

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

0

Puede hacerlo extrayendo los indexes existentes y ordenándolos, luego compare cada índice con el siguiente, si la diferencia es mayor que 1 , para que pueda darse cuenta de que hay un índice perdido en ese lugar. Así:

 let list = ['Untitled Form', 'Untitled Form - 1', 'Untitled Form - 5', 'Untitled Form - 3', 'Untitled Form - 4']; const findNextIndex = (arr)=> { const sortedArr = arr.map(item => Number(item.split('-')[1] || 0)).sort((a,b)=> ab); if(!sortedArr.includes(0)) return 0; let index = sortedArr[sortedArr.length-1] + 1; //maximum value for(let i =0; i< sortedArr.length; i++){ if(sortedArr[i+1] - sortedArr[i] > 1){ index = sortedArr[i] + 1; break; } } return index; } const nextIndex = findNextIndex(list); list = [...list, `Untitled Form${nextIndex ? ` - ${nextIndex}` : ''}`] console.log(list)

about 4 years ago · Juan Pablo Isaza Relatório

0

Esto debería funcionar

  1. Ordenar matriz para que se convierta en
 [ [0] => 'Untitled Form', [1] => 'Untitled Form - 1', [2] => 'Untitled Form - 2', .... ]
  1. recorre y findIndex que indexInTitle no coincide con el índice de la matriz.

  2. Si lo encuentra, devuelva ese índice; si no, índice incremental,

 const listMissing2 = ['Untitled Form', 'Untitled Form - 1', 'Untitled Form - 5', 'Untitled Form - 3', 'Untitled Form - 4']; const listNotMissing = ['Untitled Form', 'Untitled Form - 1', 'Untitled Form - 5', 'Untitled Form - 3', 'Untitled Form - 4', 'Untitled Form - 2']; const findMissingOrIncrementIndex = list => { const sortedList = list.sort(); const missingIndex = sortedList.findIndex((title, index) => { const [, indexInTitle] = title.split(' - '); return index > 0 && Number(indexInTitle) !== index; }); return (missingIndex > -1) ? missingIndex : list.length; } console.log(findMissingOrIncrementIndex(listMissing2)); console.log(findMissingOrIncrementIndex(listNotMissing));

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