Pergunta

Por meio de uma expressão regular e Greasemonkey Eu tenho uma matriz de resultados que se parece com:
choice1, choice2, choice3, choice3, choice1, etc..

A minha pergunta é como faço para coaduna-se com as escolhas que eu sei quantas vezes choice1 está na matriz, escolha2 está na matriz, etc., se eu não sei exatamente quantas escolhas há ou o que eles são.

O objetivo final é criar um script Greasemonkey que armazena o número de votos que cada escolha fica ao longo de várias páginas (provavelmente usando gm_setvalue embora eu estou aberto a outras idéias.)

Obrigado!

Foi útil?

Solução

Uma técnica seria para iterar sobre as escolhas e incrementar um contador associado a cada escolha única em uma propriedade do objeto.

Exemplo:

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

Você então tem um objeto com propriedades igual ao número de vezes que a propriedade existia na matriz.

Outras dicas

Não 100% de certeza que a sua procura, mas eu acho que é isso.

  // 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;

Output:

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

Classificar a matriz primeira , então você pode fazer uma única varredura para contar ocorrências (semelhantes a sugestão de Ryan acima).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top