Извлеките числовую часть каждого слова и отсортируйте по ней, после чего объедините слова пробелами. Сами слова должны остаться неизменными.
Сортировка слов строки по числовому индексу
Извлеките числовую часть каждого слова и отсортируйте по ней, после чего объедините слова пробелами. Сами слова должны остаться неизменными.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо написать функцию, принимающую строку, состоящую из слов, в каждом из которых присутствует цифра. Функция должна вернуть новую строку, где слова упорядочены в соответствии с найденными в них числами.
sortWords('T4est 3a Thi1s is2') === 'Thi1s is2 3a T4est';
Ответ
Извлеките числовую часть каждого слова и отсортируйте по ней, после чего объедините слова пробелами. Сами слова должны остаться неизменными.
function sortWords(text) {
if (!text.trim()) return '';
return text.trim().split(/\s+/)
.map(word => {
const match = word.match(/\d+/);
if (!match) throw new Error('Нет позиции в слове');
return { word, position: Number(match[0]) };
})
.sort((a, b) => a.position - b.position)
.map(item => item.word).join(' ');
}
Пример даёт Thi1s is2 3a T4est. Код допускает многозначные позиции и берёт первую последовательность цифр; если в слове несколько независимых чисел, контракт нужно уточнить. При одинаковых позициях современная стабильная сортировка сохраняет входной порядок.