Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Статистика массива (https://javascript.ru/forum/misc/41802-statistika-massiva.html)

harold 30.09.2013 00:40

Статистика массива
 
Помогите сделать задание

нужно определить, сколько раз каждый элемент встречается в массиве A.
Результат представить в виде 2d-массива [[A[m],частота], [A[n],частота], ...].
Например для A = [2, 7, 5, 1, 'a', 5, 2, 2, 'a', 'a', 7, 0]
нужно получить [[2,3], [7,2], [5,2], [1,1], ['a',3], [0,1]].

:-E

рони 30.09.2013 00:55

harold,
а пару строк сами?

harold 30.09.2013 01:02

моя это не воспринимать никак(
чувствую, что нужна сортировка, а дальше ступор.

рони 30.09.2013 01:25

harold,
:-?
for (var a = [2, 7, 5, 1, "a", 5, 2, 2, "a", "a", 7, 0], b = {}, i = 0; i < a.length; i++) b[a[i]] ? b[a[i]]++ : b[a[i]] = 1;
alert(JSON.stringify(Object.keys(b)
    .map(function (c) {
        return [c, b[c]]
    })));

Demath 30.09.2013 01:34

harold, сортировка не нужна

function StatOfArr(A)
{
    var n = A.length, B = [], b = 0;
      
    for (var i = 0; i < n; i++)
     { var k = 0, count = 1;
       while (k < b && B[k][0] !== A[i]) k++;
       if (k === b)
        { for (var j = i+1; j < n; j++){ if (A[i] === A[j]) count++; }
          B[b++] = [A[i],count]; 
        }
     }
   
    return B;
}

var arr = [2, 7, 5, 1, 'a', 5, 2, 2, 'a', 'a', 7, 0];
alert( '[['+StatOfArr(arr).join('], [')+']]' );


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