如何检查变量中重复次数最多的值或值组合?

时间:2014-10-03 21:06:34

标签: javascript jquery loops

我有一个显示各种数字组合的变量:

var sequence = [
    '01-02-03-04-05-06',
    '01-02-03-04-05-12',
    '01-02-03-04-12-30',
    '05-10-15-20-25-30',
    '02-04-06-08-10-12',
    '03-06-09-12-15-17',
    '04-08-12-16-20-24',
    '05-10-15-20-25-30'
];

我创建的这个循环允许我分别检查这个变量的每个值:

for (var i=0; i<sequence.length; i++){
    number = sequence[i].split('-');
    for (var j=0; j<number.length; j++){
        number = number[j];
    }
};

从那时起,我无法推进这一论点。我不经常使用循环,我有点迷失。我需要帮助和指导才能获得以下结果并将其插入指定的输入中:

  1. 每个序列中重复次数最多的数字。
  2. 两个数字,按顺序或不依次,在每个序列中重复次数最多。
  3. 三个数字,无论是否顺序,在每个序列中重复次数最多。
  4. 每个序列中重复次数最多的四个数字。
  5. 每个序列中重复次数最多的五个数字。
  6. 在每个序列中重复最多的六个数字,无论是否是序列。
  7. 示例:

    1. 01,02,03,04,05(每次四次)
    2. 01-02,01-03,01-04,02-03,02-04,03-04(每次三次) ...
    3. FIDDLE: http://jsfiddle.net/v8r6gojz/

2 个答案:

答案 0 :(得分:1)

使用索引为数字的数组,内容是重复该数字的次数:

var counts = [];
for (var i=0; i<sequence.length; i++){
    number = sequence[i].split('-');
    for (var j=0; j<number.length; j++){
        thisnumber = parseInt(number[j], 10);
        counts[thisNumber] = counts[thisNumber] ? count[thisNumber]+1 : 1;
    }
};

然后,您可以使用counts数组来回答您的问题。

答案 1 :(得分:-1)

我的建议是使用通用的javascript对象来跟踪数字的频率...... Here是一篇很好的文章,详细介绍了如何创建一个像C#字典一样的javascript对象。并且,here详细说明了如何计算数组中对象值的出现次数。把两者推到一起,你应该可以放在一起。