Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Cрочно помогите !!!Javascript (https://javascript.ru/forum/misc/62092-crochno-pomogite-javascript.html)

Зубик 24.03.2016 10:48

Cрочно помогите !!!Javascript
 
Не могу решить задачу уже 2 недели.
Есть список a[ 1,2,3,1,1,1,2,2,3,3,3,3].
Нужно вывести список так чтобы сначала в списке были значения которые повторяются большее число раз.
Не знаю как реализовать.

рони 24.03.2016 11:00

Зубик,
:cray:
var a = [1, 2, 3, 1, 1, 1, 2, 2, 3, 3, 3, 3],
    c = {};
a.forEach(function(b) {
    c[b] ? c[b]++ : c[b] = 1
});
a.sort(function(b, d) {
    return c[d] - c[b]
});
alert(a);

Зубик 24.03.2016 11:04

Спасибо.Наверно мне не одолеть javascript

Зубик 25.03.2016 10:40

Если колличество элементов одинаковое то такой алгоритм не работает.

Зубик 25.03.2016 10:41

как вывести чтоб было [3,3,3,2,2,2,1,1,1]

Dilettante_Pro 25.03.2016 10:57

Цитата:

Сообщение от Зубик (Сообщение 411960)
как вывести чтоб было [3,3,3,2,2,2,1,1,1]

А почему так, а не наоборот? В первом вопросе были условия сортировки, а это на основании чего?

Зубик 25.03.2016 11:08

если в списке одинаковые элементы.

рони 25.03.2016 11:09

Сортировка массива по убыванию с приоритетом общего количества данных элементов
 
Зубик,
var a = [ 1,2,3,1,1,2,3,3,2], c = {};
   a.forEach(function(a) {
   c[a] ? c[a]++ : (c[a]=1)
});
 a.sort(function(a,b) {
   return c[b] - c[a] || b - a
})
alert(a)

Зубик 25.03.2016 11:14

Большое спасибо


Часовой пояс GMT +3, время: 07:03.