Reputation: 51
//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
Reputation: 1282
In one line:
function order(words) {
return words
.split(' ')
.sort((a, b) => a.match(/\d+/) - b.match(/\d+/))
.join(' ');
}
Upvotes: 2
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