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

У меня есть строка вроде «is2 Thi1s T4est 3a», мне нужно ее отсортировать, чтобы массив выглядел так: «Thi1s is2 3a T4est». Номер может появиться в любом месте строки. Я знаю, как сортировать строки по алфавиту и как сортировать массив чисел, но как это сделать в этом случае? Есть ли метод, который помогает сортировать это численно игнорируя буквы? Я пытался выполнить эту задачу некоторое время, любая помощь будет оценена!

 Trasiva10 авг. 2016 г., 18:52
Вам нужно написать функцию для анализа чисел в каждой строке, а затем сделать их полными.
 Alex10 авг. 2016 г., 18:57
Наомик, спасибо за указание! Я исправил это! Это лучше объясняет проблемы?
 user63318310 авг. 2016 г., 18:52
Как это массив строк? Я вижу одну строку.
 TAGraves10 авг. 2016 г., 18:52
Есть ли гарантия, что в каждой строке будет только один номер?
 Alex10 авг. 2016 г., 19:00
TAGraves, да, одна подстрока всегда будет иметь только один номер!

Ответы на вопрос(2)

Сначала определите функцию сравнения.

compare = function(x, y) {
  return x.match(/\d+/g)[0] - y.match(/\d+/g)[0];
}

тогда используйте это.

var z = "is2 Thi1s T4est 3a";
z.split(" ").sort(compare).join(" ");
//"Thi1s is2 3a T4est"

Или, если вы предпочитаете одну строку,

z.split(" ").sort(function(x, y){return x.match(/\d+/g)[0] - y.match(/\d+/g)[0];}).join(" ")
 Alex10 авг. 2016 г., 22:32
Спасибо за ваш комментарий !
Решение Вопроса

sort на основе числового значения, хранящегося в каждой строке:

let words = "is2 Thi1s T4est 3a".split(' ');
words.sort((a, b) => a.replace(/[^\d]+/g, '') - b.replace(/[^\d]+/g, ''));
console.log(words.join(' '));

 user63318310 авг. 2016 г., 18:59
LOL мой ответ был почти идентичен вашему. вместо этого я даю тебе +1 и убираю мою.

Ваш ответ на вопрос