В Stackoverflow есть много предложений по обработке синхронной сортировки нескольких массивов. Одна идея, которая пришла мне в голову, - это создание отсортированного массива индексов для пошагового обхода соответствующих массивов, которые остаются несортированными. Вот краткий пример с массивом nam
, содержащим имена и массив num
с соответствующими оценками. Функция mkidx(arr)
ожидает, что массив будет отсортирован после в качестве аргумента (я выбрал num
), и возвращает отсортированный (в порядке убывания) индексный массив, который затем может использоваться для пошагового выполнения всех несортированных массивов:
var nam=['eins','zwei','drei'];
var num=[10,200,30];
// create an index array:
const mkidx=arr=>arr.map((v,i)=>
({v,i})).sort((a,b)=> typeof a.v=="string"? a.v.localeCompare(b.v) : b.v-a.v).map(v=>v.i);
mkidx(num).forEach(k=>
console.log(k,nam[k]+': '+num[k])
)
Я создал функцию создания индекса, которая проверяет тип элементов, а затем сортирует их по алфавиту (.localeCompare()
) или численно (по убыванию).