@kirbi1996

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

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

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

Заранее благодарю.
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
l3ftoverz
@l3ftoverz Куратор тега JavaScript
Люблю Финский металкор
В JS индекс массива начинается с 0.

const dict = ["q2w", "mmm1e", "m4hr", "c3s"];
const indexesOrder = [1, 0, 3, 2];

const result = indexesOrder.map(i => dict[i] || undefined);

console.log(result);
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
HistoryART
@HistoryART
Молодой и дерзкий
Так по индексу или по цифре в строке?
Ответ написан
@Karpion
Создать хэш-массив, где индексом будет нижний массив, а значением - верхний.
Отсортировать нижний массив стандартным методом, встроенным в язык.
Далее пройти по хэш-массиву, выдёргивая значения элементов, где индексами будет отсортированный нижний массив.

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

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

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