@OptimusPrime5645

Как отсортировать по убыванию массив и выбрать первые 5 значений из всего массива?

Привет.

Есть массив из чисел, мне нужно:
1. определить какие цифры чаще всего встречаются и сколько раз. (это сделано)

2. теперь нужно отсортировать количество совпадений от большего к меньшему, не сам номер цифры, а общее количество совпадений которое мы получаем в итоге.
чтобы было:
номер 15 - 3(сортировка от этих чисел) раза
номер 10 - 2 раза
и тд

3. и последнее:
если комбинаций цифр более 5, сделать ограничение по выводу не более 5.
т.е в моем примере получается
номер 15 - 3 раза
номер 10 - 2 раза
номер 4 - 2 раза
номер 12 - 1 раз
номер 3 - 1 раз
-----------и вот на этом все, не более 5 значений-------------
номер 2 - 1 раз (а вот эти все уже не нужны)
... (а вот эти все уже не нужны)

var arr = [1,2,15, 10, 10,12,15,15,3,4,4];
var result = {};
arr.forEach(function(a){
    result[a] = result[a] + 1 || 1;
});
for (var key in result) {
document.write('Номер' + key + ' -> ' + result[key] + ' раз(а) <br>');
}
  • Вопрос задан
  • 202 просмотра
Пригласить эксперта
Ответы на вопрос 2
@WAR_VIK
Думаю что вот так:
let arr = [1, 2, 15,  10,  10, 12, 15, 15, 3, 4, 4];
let ob = {};
arr.forEach(i => ob[i] ? ++ob[i] : ob[i] = 1);
let arr2 = Object.entries(ob);
arr2.reverse().sort((a, b) => b[1] - a[1]);
let res = arr2.slice(0, 5);
console.log(res);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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