Vikas Tyagi
Vikas Tyagi

Reputation: 51

How to sort a string according to integers in JavaScript?

//This is a function to sort a string according to integers

function order(words) {
    var str = words.split(' ');
    var newArr = [];
    console.log(str);
    console.log('----');
    for (var i = 0; i < str.length; i++) {
        var sorted = str[i].split('').sort();
        newArr.push(sorted);
    }
    console.log(newArr);
    var newar = [];
    for (var j = 0; j < newArr.length; j++) {
        newar += newArr[j].join('') + ' ';
    }
    console.log(newar.trim().split(' ').sort().join(' '));
}
order("is2 Thi1s T4est 3a");

//Result should be: Thi1s is2 3a T4est

Upvotes: 2

Views: 218

Answers (2)

yuantonito
yuantonito

Reputation: 1282

In one line:

function order(words) {
    return words
        .split(' ')
        .sort((a, b) => a.match(/\d+/) - b.match(/\d+/))
        .join(' ');
}  

Upvotes: 2

Nina Scholz
Nina Scholz

Reputation: 386610

Assuming, only one number is in a splitted string, then you could match a number and take it for sorting.

function order(string) {
    function getNumber(s) { return +s.match(/\d+/)[0] || 0; }

    return string
        .split(' ')
        .sort(function (a, b) { return getNumber(a) - getNumber(b); })
        .join(' ');
}

console.log(order("is2 Thi1s T4est 3a"));

Upvotes: 6

Related Questions