Zählergebnisse in einem Array
-
20-08-2019 - |
Frage
Mit Hilfe eines regulären Ausdrucks und Greasemonkey Ich habe eine Reihe von Ergebnissen, die wie folgt aussehen:
choice1, choice2, choice3, choice3, choice1, etc..
Meine Frage ist, wie kann ich die Entscheidungen Tally damit ich weiß, wie oft Auswahl1 im Array ist, ist choice2 im Array, usw., wenn ich weiß nicht genau, wie viele Möglichkeiten es gibt, oder was sie sind.
Das ultimative Ziel ist es, ein Greasemonkey-Skript zu erstellen, die die Anzahl der Stimmen jeder Wahl über mehrere Seiten wird gespeichert (wahrscheinlich gm_setvalue verwenden, obwohl ich andere Ideen offen bin.)
Danke!
Lösung
Eine Technik wäre über die Wahl zu wiederholen und einen Zähler zugeordnet ist jede eindeutige Wahl in einer Objekteigenschaft erhöhen.
Beispiel:
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
Sie dann ein Objekt, mit Eigenschaften gleich die Anzahl der Male, dass die Immobilie im Array existiert hat.
Andere Tipps
nicht 100% sicher, was Sie suchen, aber ich denke, das ist es.
// 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;
Ausgang:
choice 1: 2
choice 2: 1
choice 3: 6
choice 4: 3
zuerst das Array sortieren , dann können Sie einen einzelnen Sweep machen Vorkommen (ähnlich Ryans Vorschlag oben) zu zählen.