Answer
t.me/js_testОтвет:
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("")); // ""