문제

정규 표현과 그리스 몬키를 통해 다음과 같은 결과가 있습니다.
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