Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

175
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!