khipster
@khipster

Как отсортировать два логически связанных массива?

Есть два массива, Имена и Возрасты:
var name = ['Mihail', 'Vasya', 'Gena' ];
var age = [20, 44, 32];
Нужно отсортировать массив name по длине имён, при этом age нужно отсортировать таким же образом чтобы имена и возрасты не перемешались.
  • Вопрос задан
  • 327 просмотров
Пригласить эксперта
Ответы на вопрос 2
DeeplessHole
@DeeplessHole
Студент матмеха СпбГУ
Так ведь достаточно сделать так, чтобы при каждом перемещении в первом массиве мы знали индексы участвующих в них элементов и по этим индексам делали перемещение элементов и во втором массиве.

Еще можно хранить массив структур типа { name: "Имя", age: 999 }, тогда при сортировке возрасты будут перемещаться вместе с именами.
Ответ написан
Комментировать
@Aves
let names = ['Mihail', 'Vasya', 'Gena' ], ages = [20, 44, 32];
[names, ages] = names
  .map((name, i) => [name, ages[i]])
  .sort((a, b) => a[0].length - b[0].length)
  .reduce((res, pair) => (res.forEach((e, i) => e.push(pair[i])), res), [[],[]]);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы