通过一个正则表达式和的Greasemonkey的装置I有结果,看起来像的数组:结果     choice1, choice2, choice3, choice3, choice1, etc..

我的问题是我如何从中总结出选择,所以我知道选择1数组中有多少次,选择2为阵列等,如果我不知道到底有多少选择有或者它们是什么。

的最终目标是创建一个存储票每个选择得到了多个页面的数量的Greasemonkey脚本(可能使用gm_setvalue虽然我开到其他的想法。)

谢谢!

有帮助吗?

解决方案

的一种技术将迭代选择和递增的对象属性关联到每个独特的选择的计数器。

示例:

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

您然后与等于的次数属性的对象,该属性在阵列中的存在。

其他提示

不是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

<强> 第一排序阵列 ,然后可以使在单次扫描计数出现(类似于上面Ryan的建议)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top