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

180
Visualizações
¿Cómo ordenar los alfabetos en el lado derecho ascendente y el número en el lado izquierdo descendente (cadena de la entrada del usuario)? soy nuevo en aprender js

Estoy trabajando en una función para aceptar la entrada de un usuario. Cuando el usuario envíe, ordenará ascendentemente por alfabeto y número a la derecha descendente. Por ejemplo, si la entrada del usuario es :

a98 @#$64b,ce>75d l3kj gh y la salida debería ser : abcdeghjkl9876543

Así que esto es lo que he hecho hasta ahora :

 let sortNumButton = document.getElementById('sortNumButton'); let sortOutputContainer = document.getElementById('sortOutputContainer'); let inputField = document.getElementById('inputField'); sortNumButton.addEventListener('click', function(){ let string = document.createElement('p') string.innerText = inputField.value .split('') .sort((a,b) => isFinite(a) - isFinite(b) || a > b || -(a > b)) .join('') .replace(/[^a-zA-Z-0-9]/g, "") sortOutputContainer.appendChild(string) inputField.value = "" })
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Una forma de hacer esto es simplemente crear un sistema de puntuación para la comparación.

Por ejemplo, si somos un personaje, podemos usar charCodeAt para obtener su código de caracteres, solo devolverlo como un valor positivo.

Si somos un número, podríamos simplemente devolverlo como un número, digamos 1000-somechar y luego restar su valor.

p.ej..

 const txt = 'a98 @#$64b,ce>75d l3kj gh'; const isNumeric = /[0-9]/; const isAlpha = /[az]/; const isAlphaNumeric = /[a-z0-9]/; function score(v) { if (isAlpha.test(v)) return v.charCodeAt(0); else return 1000-v; } console.log( txt.split('') .filter(t => isAlphaNumeric.test(t)) .sort((a,b) => score(a) - score(b)) .join('') )

Otra opción, si tenemos caracteres limitados, podríamos simplemente crear una tabla de búsqueda simple y luego ordenar esto...

p.ej..

 const txt = 'a98 @#$64b,ce>75d l3kj gh'; const isAlphaNumeric = /[a-z0-9]/; const lookup = 'abcdefghijklmnopqrstuvwxyz9876543210'; function score(v) { return lookup.indexOf(v); } console.log( txt.split('') .filter(t => isAlphaNumeric.test(t)) .sort((a,b) => score(a) - score(b)) .join('') )

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede usar expresiones regulares para extraer los números y las letras por separado y luego puede realizar la clasificación.

Demostración de trabajo:

 // Input string const str = 'a98 @#$64b,ce>75d l3kj gh'; // letters string with sorting in ascending order. const lettersString = str.match(/[az]/g).sort().join(''); // Numbers string with sorting in descending order. const numbersString = str.match(/[0-9]/g).sort().reverse().join(''); // Result console.log(`${lettersString}${numbersString}`);

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede usar una expresión regular para extraer los números y las letras con match . Esto devuelve una matriz que luego puede join en una cadena para la salida.

Este ejemplo es un poco más funcional de lo que probablemente se necesite, pero muestra un enfoque diferente.

 const str = 'a98 @#$64b,ce>75d l3kj gh'; // `comparator` gets called with a `type` // argument and returns a function that gets used // as the actual sort comparator. // We use `localCompare` to return a sorted array // based on the type. function comparator(type) { return function (a, b) { return ( type === 'str' ? a.localeCompare(b) > b.localeCompare(a) : a.localeCompare(b) < b.localeCompare(a) ); } } // `sort` accepts a type argument and // returns a string based on calling // the sort method on the array which calls the // comparator function with the type, and once that // process is complete returns a string function sort(data, type) { return data.sort(comparator(type)).join(''); } // `match` returns an array, so we pass that to // the sort function with a type parameter const letters = sort(str.match(/[az]/g), 'str'); const numbers = sort(str.match(/[0-9]/g), 'num'); console.log(`${letters}${numbers}`);

Información Adicional

  • Cadenas de plantilla

  • localeCompare

  • Operador condicional (ternario)

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