Home > front end >  How to sort String from alphabet first then number (in javascript). example if the input is "as
How to sort String from alphabet first then number (in javascript). example if the input is "as

Time:03-09

I'm working on a simple sorting program where i need to sort an input from a user to remove whitespace, special character and sort the string(from user input) ascendingly. im new to learning js and i found this code online.

let sortNumButton = document.getElementById('sortNumButton');
let sortOutputContainer = document.getElementById('sortOutputContainer');
let inputField = document.getElementById('inputField');

sortNumButton.addEventListener('click', function(){
let paragraph = document.createElement('p')

paragraph.innerText = inputField.value.split('').sort().join('').replace(/[^a-zA-Z0-9-. ]/g, "");
sortOutputContainer.appendChild(paragraph);
inputField.value = "";
})

the program works but the output prints the number first, not alphabet first

CodePudding user response:

You can .replace the result afterwards, matching numeric characters and putting that capture group at the end instead of the beginning.

const inputValue = "asd5lk43fj6vc";
const sorted = [...inputValue.replace(/[^a-zA-Z0-9-. ]/g, '')].sort().join('');
const result = sorted.replace(/^(\d )(.*)/, '$2$1');
console.log(result);

CodePudding user response:

You could check with isFinite for numbers and sort then the rest by their value.

const
    sort = string => string
        .split('')
        .sort((a, b) => isFinite(a) - isFinite(b) || a > b || -(a < b))
        .join('');

console.log(sort('asd5lk43fj6vc'));

  • Related