Отсортировать один массив по другому js?

Здравствуйте необходимо отсортировать один массив по другому.
Пример
var arr1 = ["q2w", "mmm1e", "m4hr", "c3s"];
//нужно отсортировать верхний массив, по нижнему
var arr2 = [2, 1, 4, 3];
// на выходе получаем var arr1 = ["mmm1e", q2w", "c3s" ,"m4hr" ]

Думаю суть ясна, массив arr2 сортируем, и вместе с ним по таким же индексам сортируется и arr1.

Заранее благодарю.
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 3
HistoryART
@HistoryART
Надзиратель
Так по индексу или по цифре в строке?
Ответ написан
@Karpion
Создать хэш-массив, где индексом будет нижний массив, а значением - верхний.
Отсортировать нижний массив стандартным методом, встроенным в язык.
Далее пройти по хэш-массиву, выдёргивая значения элементов, где индексами будет отсортированный нижний массив.

Второй вариант:
Преобразовать это дело в один массив такого вида:
["2-q2w", "1-mmm1e", "4-m4hr", "3-c3s"];
(минус - в рои разделителя). Отсортировать. Вывести правую часть - то, что после минуса.
Ответ написан
Комментировать
john36allTa
@john36allTa
alien glow of a dirty mind
arr2.sort((a,b)=>a-b).map(k => arr1.find(v => +v.replace(/\D/g,'') === k)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы