Anzahl Instanzen von string in ein array
Ich habe ein array in jQuery, und ich brauche, um die Anzahl der "echte" strings in dem array, und dann die "numOfTrue" variable gleich der Anzahl der echten Saiten. Also im unteren Bereich gibt es 2 "echte" Saiten, so numOfTrue würde gleich 2.
var numOfTrue;
var Answers = [ "true", "false", "false", "true", "false" ];
Ich bin mir nicht sicher, wie zu tun, eine Schleife durch das array in jQuery zu zählen, die Saiten. Oder ist eine Schleife sogar notwendig?
Die Anzahl der true strings ändern könnte, von irgendwo zwischen 1 bis 5.
- Kein jQuery erforderlich, " dies ist javascript-Land.
- Sie können
.each()
Schleife, und.filter()
oder.map()
mehr funktionsfähig. Aber wissen Sie wirklich brauchen, um jQuery verwenden? - Sie müssen nicht ein "array in jQuery", haben Sie ein "array in JavaScript". Sie sind für die Programmierung in der Sprache "JavaScript" aus; Sie sind nur mit Hilfe der jQuery-Bibliothek.
- Danke für die Klarstellung, Rakete. Habe ich eine javascript-Beispiele unten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwendung eines einfachen, altmodischen Schleife:
oder ein
reduce
oder eine
filter
p
undc
stehen für Sie in Ihrem code?Brauchen Sie nicht, die jQuery für das.. eine einfache for-Schleife, wie unten würde den trick tun,
oder auch ohne Schleife, DEMO
Answers.join(',').match(/(?:,|^)true(?:,|$)/g).length
. Diese behandelt Situationen, in denen ein term kann ein sub-string von einem anderen (d.h. das array enthält sowohl "wahr" und "wahrsten" und Sie möchten nur die Anzahl der exakten Zeichenfolge "true"). Regex-demo: regexpal.com/...Könnte es nicht so performance freundlich, aber können Sie Filter verwenden und dann zählen Sie mit grep:
for
Schleife odereach
, aber ich mag, wie Sie waren in der Lage, um es bis zu 1 Zeile :). FWIW, wenn jQuery hattereduce
Methode Sie können möglicherweise zu erstellen eine effiziente one-liner...Answers.filter(function(v){ return v === "true"; }).length;
.filter
ist nicht kompatibel mit IE 8. 🙁 kangax.github.com/es5-compat-tablefor
Schleife.Brauchen Sie nicht jQuery für diese Aufgabe. Einfach nur Javascript. Die beste Antwort, die gegeben ist durch Jamiec von Ihnen könnte auch filter oder reduzieren zur Verfügung stehenden Funktionen für arrays.
filter-Funktion:
Hier bieten callback-Funktion, die ausgeführt wird für jedes Element im array. Wenn diese Funktion gibt
true
dann dieses Element wird im array zurückgegeben. Dann bekommst du die Länge des Arrays ( Länge["true", "true"]
array2
)reduzieren Funktion:
Senken-Funktion müssen die callback-Funktion, die ausgeführt wird für jedes Element im array. Array-Element wird als zweites argument übergeben wird, der erste ist der Rückgabewert des zuvor ausgeführten Rückruf. Das zweite argument von reduce-Funktion ist der Startwert, der erste callback-Funktion. Falls Sie dies auslassen, dann das erste Element aus dem array bereitgestellt wird (in diesem Beispiel, wenn Sie vergessen, hinzuzufügen
0
als zweites argument dann das Ergebnis Wert sein wird"true0010"
string, denn anstatt das hinzufügen Telefonnummern, die Sie werden verketten, Stacheln)filter
undreduce
funktionieren nicht in älteren Browsern, z.B. IE 8 oder unten. Man könnte erwägen Sie die Verwendung von JQuerygrep
option, wenn.Können Sie auch reguläre Ausdrücke und die String.der Prototyp.match()
Code:
JS:
Wenn Sie nicht verwenden möchten, jQuery (und tbh, Sie sollten nicht für diese), wird dieser Arbeit:
Den Javascript-äquivalent:
http://jsfiddle.net/3PpJS/
$.each(Answers, ...)
$.each
stimmten bis.. obwohl es nicht korrekt war(zunächst)===
statt==
http://jsfiddle.net/kpcrash/Xxcw6/
jQuery
für einfache Sachen wie diese.Können Sie jQuery.jeder zum Durchlaufen der Liste, zum Beispiel:
Hier ein jsfiddle wenn Sie möchten, spielen Sie mit ihm:
http://jsfiddle.net/HHrwc/
Nur mit JS