计算数组中的结果

时间:2008-12-07 20:19:36

标签: javascript arrays greasemonkey

通过正则表达式和Greasemonkey,我有一系列结果如下:
    choice1, choice2, choice3, choice3, choice1, etc..

我的问题是我如何计算选择因此我知道choice1在数组中有多少次,choice2在数组中等等,如果我不确切知道有多少选择或它们是什么。< / p>

最终目标是创建一个Greasemonkey脚本,该脚本存储每个选项在多个页面上获得的投票数(可能使用gm_setvalue,尽管我对其他想法持开放态度。)

谢谢!

3 个答案:

答案 0 :(得分:2)

一种技术是迭代选择并递增与对象属性中每个唯一选择相关联的计数器。

示例:

var choiceCounts = {};
for (var iLoop=0; iLoop < aChoices.length; iLoop++) {
  var keyChoice = aChoices[iLoop];
  if (!choiceCounts[keyChoice]) {
    choiceCounts[keyChoice] = 1;
  } else {
    choiceCounts[keyChoice]++;
  } //if
} //for

然后,您有一个对象,其属性等于该属性在数组中存在的次数。

答案 1 :(得分:1)

不是100%肯定你在寻找什么,但我认为就是这样。

  // Original data
    var choices = [
        "choice 1",
        "choice 1",
        "choice 2",
        "choice 3",
        "choice 3",
        "choice 3",
        "choice 3",
        "choice 3",
        "choice 3",
        "choice 4",
        "choice 4",
        "choice 4"];


    //Create the results array
    var result = new Object();

    for (var choice in choices) {
        if (result[choices[choice]] === undefined)
            result[choices[choice]] = 1;
        else
            result[choices[choice]]++;
    }

    //Print result
    var str = "";

    for (var item in result)
        str += item + ": " + result[item] + "<br />";


    document.getElementById("resultDiv").innerHTML = str;

<强>输出:

choice 1: 2
choice 2: 1
choice 3: 6
choice 4: 3

答案 2 :(得分:0)

首先对数组进行排序 ,然后您可以进行一次扫描来计算出现次数(类似于上面Ryan的建议)。