使用javascript连续查找最可重复的值

时间:2013-10-20 09:17:21

标签: javascript php

我将数据集作为可重复的数字:

02 02 25 27 32 47,
45 55 11 44 65 47,
12 02 56 48 65 25,
45 56 11 44 76 54,

它可以是数组或对象并不重要,但我需要做的是找到列中最常用的值。所以,让我们说,在我的样本数据中,第一列应该带45,第二列02,第三列等等。

找出列中最可重复的值的最简单方法是什么。它可以是javascript(首选)或任何其他后端编程语言。

2 个答案:

答案 0 :(得分:0)

对它们进行排序然后找到所有邻居计数相同的数字然后对计数进行排序。 Counting the occurrences of JavaScript array elements

答案 1 :(得分:0)

您可以使用对象累积数组中的值计数,然后选择计数最大的值:

function mostFrequentValueOf( arr ) {
    var counts = {};
    for( var i=0; i<arr.length; ++i ) {
        var val = arr[i];
        if( counts[val] )
            counts[val]++;
        else
            counts[val]=1;
    }
    var maxcnt=0, maxval;
    for( var val in counts ) {
        var cnt = counts[val];
        if( cnt > maxcnt ) {
            maxcnt = cnt;
            maxval = val;
        }
    }
    return maxval;
}

顺便说一句,这也适用于字符串数组值。

如果您的数据被组织为列数组

var columns = [ [02,45,12,45], [02,55,02,56], [25,11,56,11], [27,44,48,44], [32,65,65,76], [47,47,25,54] ];

您可以直接调用该函数:mostFrequentValueOf(columns[0])

如果您的数据被组织为行数组

var rows = [ [02,02,25,27,32,47], [45,55,11,44,65,47], [12,02,56,48,65,25], [45,56,11,44,76,54] ];

我认为你应该重组数据

var column_idx=0, column=[];
for( var i=0; i<rows.length; ++i )
    column.push( rows[i][column_idx] );

然后使用相同的函数mostFrequentValueOf(column)

这是JSfiddle:http://jsfiddle.net/V4TRc