Сортировка слов строки по числовому индексу

Извлеките числовую часть каждого слова и отсортируйте по ней, после чего объедините слова пробелами. Сами слова должны остаться неизменными.

Короткий ответ

Что ответить на собеседовании

Извлеките числовую часть каждого слова и отсортируйте по ней, после чего объедините слова пробелами. Сами слова должны остаться неизменными.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо написать функцию, принимающую строку, состоящую из слов, в каждом из которых присутствует цифра. Функция должна вернуть новую строку, где слова упорядочены в соответствии с найденными в них числами.


 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. Код допускает многозначные позиции и берёт первую последовательность цифр; если в слове несколько независимых чисел, контракт нужно уточнить. При одинаковых позициях современная стабильная сортировка сохраняет входной порядок.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее