@Hanry654

Как отсортировать map по числам (от большего к меньшему )?

60a6c926370f9662505512.png
  • Вопрос задан
  • 197 просмотров
Решения вопроса 2
Aetae
@Aetae
Тлен
Во-первых: если ключи у вас строки - используйте объект без прототипа (Object.create(null)) вместо Map - работа с ним на порядок быстрее.
//upd: как верно заметил Дмитрий Беляев, в современных браузерах быстродействие Map не меньше Object.

Во-вторых: порядок ключей в Map соответствует порядку добавления и не может быть изменен постфактум. Вам следует для сортировки получить из Map массив, отсортировать, и либо создать новый Map из оного, либо заново добавить все значения в исходный, предварительно тот очистив.
Если ключи заранее известны, то лучше подготовить Map заранее с пустыми значениями - перезапись не меняет порядок.
Ответ написан
bingo347
@bingo347 Куратор тега Node.js
Crazy on performance...
Inplace не получится, но можно в новую:
const sortedMap = new Map([...map.entries()].sort(([, a], [, b]) => b - a));
console.log(sortedMap);


Хотя если сильно хочется, то можно и inplace наколдовать, через очистку и перезапись:
const sorted = [...map.entries()].sort(([, a], [, b]) => b - a);
map.clear();
sorted.forEach(([k, v]) => map.set(k, v));
console.log(map);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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