Функция order
Ответ:
function order(words) {
return words
.split(" ")
.sort((a, b) => +a.match(/\d/) - +b.match(/\d/))
.map((word) => word.match(/\D/g)?.join(""))
.join(" ");
}
Объяснение:
Первым делом строка разбивается на массив, чтобы её легче было сортировать. Затем вызывается метод sort, в котором с помощью регулярного выражения из строк вычленяются цифры и сравниваются между собой.
После того как массив отсортировался, опять с помощью регулярного выражения из каждой получившейся строки выделяется массив всех не-цифр и обратно преобразуется в строку с помощью метода join.
join вызывается через опциональную цепочку, потому что при передаче пустой строки в метод match он вернёт null и выскочит ошибка.
Ну и заключительным этапом получившийся массив преобразуется в строку.
Код для проверки:
function order(words) {
return words
.split(" ")
.sort((a, b) => +a.match(/\d/) - +b.match(/\d/))
.map((word) => word.match(/\D/g)?.join(""))
.join(" ");
}
console.log(order("is2 Thi1s t4est 3a")); // This is a test
console.log(order("javaSc3ript 1I li2ke")); // I like javaScript
console.log(order("4like Lot1s panca5kes pe3ople o2f")); // Lots of people like pancakes
console.log(order("")); // ""