2

正規表現と Greasemonkey を使用すると、次のような結果の配列が得られます。
choice1, choice2, choice3, choice3, choice1, etc..

私の質問は、どのように選択肢を集計するかです。そうすれば、choice1 が配列内にある回数、choice2 が配列内にある回数などを知ることができます。

最終的な目標は、各選択肢が複数のページで得た投票数を格納する Greasemonkey スクリプトを作成することです (他のアイデアも受け入れますが、おそらく gm_setvalue を使用します)。

ありがとう!

4

3 に答える 3

2

1 つの手法は、選択肢を繰り返し処理し、オブジェクト プロパティ内の一意の選択肢ごとに関連付けられたカウンターをインクリメントすることです。

例:

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

次に、プロパティが配列に存在した回数と同じプロパティを持つオブジェクトを取得します。

于 2008-12-07T20:38:37.303 に答える
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
于 2008-12-07T20:33:50.463 に答える
0

最初に配列を並べ替えてから、単一のスイープを作成して出現回数をカウントできます (上記の Ryan の提案と同様)。

于 2008-12-07T21:21:37.683 に答える