Подсчет результатов в массиве - PullRequest
2 голосов
/ 07 декабря 2008

С помощью регулярного выражения и Greasemonkey у меня есть массив результатов, который выглядит следующим образом:
choice1, choice2, choice3, choice3, choice1, etc..

У меня вопрос, как мне составить список вариантов, чтобы я знал, сколько раз выбор1 находится в массиве, выбор 2 в массиве и т. Д., Если я не знаю точно, сколько вариантов есть или что они есть. 1005 *

Конечная цель - создать скрипт Greasemonkey, в котором будет храниться количество голосов, которые каждый выбор получает за несколько страниц (возможно, используя gm_setvalue, хотя я открыт для других идей).

Спасибо!

Ответы [ 3 ]

2 голосов
/ 07 декабря 2008

Одним из методов будет перебор вариантов и увеличение счетчика, связанного с каждым уникальным выбором в свойстве объекта.

Пример:

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 голос
/ 07 декабря 2008

Не уверен на 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
0 голосов
/ 08 декабря 2008

Сначала отсортируйте массив , затем вы можете выполнить один цикл для подсчета вхождений (аналогично предложению Райана выше).

...