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

112
Vistas
¿Iterar sobre dos matrices separadas de diferente longitud y completar una tercera usando una condición en JavaScript?

He hecho algo similar en el pasado con un bucle anidado, pero por alguna razón no puedo pensar en esto para que funcione. Sigo teniendo problemas que involucran la indexación de dos matrices separadas y ha sido un obstáculo continuo

En este caso, estoy tratando de ordenar una cadena. La cadena incluye letras y números, la tarea es ordenar las letras en orden alfabético inverso manteniendo los números en su mismo índice.

Se me ocurrió esta solución (probablemente no sea la más eficiente), pero no puedo hacer que la matriz sortString se una para poder unir las letras y los números en una cadena.

 function reverse(str) { // split the str into an array const arr = [...str] // converts each element in arr to a number, letters are string 'NaN' const numArray = arr.map(x=> Number(x)).map(x=> x >= 0 ? x : String(x)) // array of the sorted letters const letters = arr.filter(x=> !/[0-9]/g.test(x)).reverse() // initiate empty array to hold the combined numbers and letters let sortString = [] // Use for loop to cycle through and replace elements that are 'NaN' with letters from the letter array. All pushed to sortString. for (let i=0; i<arr.length; i++) { sortString.push(numArray[i] === 'NaN' ? letters[0] : numArray[i]) } return sortString } reverse("ab89c") // output should be "cb89a"
about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Aquí hay un código que funciona:

La explicación de cómo funciona el código está en línea como comentarios.

Básicamente, saca los números, ordena las letras al revés y vuelve a colocar las letras ordenadas en el lugar correcto.

Debido a que es paso a paso, puede agregar el registro de la consola en cada variable después de asignarla para ver cómo funciona paso a paso.

 function reverse(input) { // This function from: https://stackoverflow.com/a/32567789/569302 function testIsLetter(c) { return c.toLowerCase() != c.toUpperCase(); } // Convert from array to string to process character by character let inputAsArray = input.split(''); // This is where we'll lookup where to put the letters when we're done let mapped = inputAsArray.map((s) => { return { s, isLetter: testIsLetter(s) } }) // Now that we've captured where the letters are, take the numbers (non-letters) out let filtered = mapped.filter(m => m.isLetter) // Convert the object into just letters so they're easily compared when we sort let filteredAsLettersArray = filtered.map(f => fs) // Sort ascending filteredAsLettersArray.sort() // Reverse to sort descending filteredAsLettersArray.reverse() // Now we need to put the letters back. let resultAsArray = []; let letterIndex = 0; mapped.forEach(m => { // If it's a letter, we use the sorted result (incrementing letterIndex each time) if (m.isLetter) { resultAsArray.push(filteredAsLettersArray[letterIndex]); letterIndex++; } else { // Otherwise we use the number resultAsArray.push(ms); } }); let result = resultAsArray.join(''); return result; } console.log(reverse("ab89c")); console.log(reverse("1a2eb8f9c"));
about 4 years ago · Santiago Trujillo Denunciar

0

Puede obtener una matriz de no dígitos, ordenarla y mapear la cadena dividida con las letras ordenadas en lugares si no es un dígito.

 const reverse = string => { const array = Array.from(string), letters = array .filter(v => /\D/.test(v)) .sort(); return array .map(v => /\D/.test(v) ? letters.pop() : v) .join(''); }; console.log(reverse("ab89c"));

Un enfoque ligeramente diferente toma un Proxy para los elementos de clasificación deseados:

¿Cómo ordenar solo una parte de la matriz? entre índices dados

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