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

241
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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