Zum ersten Mal arbeite ich mit jQuery.inArray()
und es wirkt irgendwie seltsam.
Befindet sich das Objekt im Array, wird 0 zurückgegeben, in Javascript ist 0 jedoch falsch. Es wird also Folgendes ausgegeben: "ist NICHT im Array"
var myarray = [];
myarray.push("test");
if(jQuery.inArray("test", myarray)) {
console.log("is in array");
} else {
console.log("is NOT in array");
}
Ich muss die if-Anweisung ändern in:
if(jQuery.inArray("test", myarray)==0)
Dies macht den Code jedoch unlesbar. Besonders für jemanden, der diese Funktion nicht kennt. Sie werden erwarten, dass jQuery.inArray ("test", myarray) true ergibt, wenn sich "test" im Array befindet.
Meine Frage ist also, warum es so gemacht wird. Ich mag das wirklich nicht. Aber es muss einen guten Grund geben, es so zu machen.
quelle
if jQuery.inArray('test', myarray) isn't -1
$.isInArray = function(test,array) { return $.inArray(test, array) !== -1; };
$.isInArray = function(item, array) { return !!~$.inArray(item, array); };
(Ich würde solchen kryptischen Code in einer gut benannten Funktion behalten, um die Absicht klar zu halten :))if( $.inArray(test, array) > -1) { // do stuff }
$.inArray
Gibt den Index des Elements zurück, wenn es gefunden wurde, oder -1, wenn dies nicht der Fall ist - kein boolescher Wert. Das ist also richtigquelle
Die Antwort stammt aus dem ersten Absatz der Dokumentationsprüfung, wenn die Ergebnisse größer als -1 sind, nicht wenn sie wahr oder falsch sind.
quelle
Die richtige Art der Verwendung
inArray(x, arr)
besteht darin , sie überhaupt nicht zu verwenden und stattdessen zu verwendenarr.indexOf(x)
.Der offizielle Standardname ist auch klarer in
0
Bezug auf die Tatsache, dass der zurückgegebene Wert ein Index ist. Wenn also das übergebene Element das erste ist, erhalten Sie ein zurück (das ist in Javascript falsch).(Beachten Sie, dass
arr.indexOf(x)
sich in den Internet Explorer bis IE9 nicht unterstützt , wenn Sie also IE8 unterstützen müssen und früher, das wird nicht funktionieren, und die jQuery - Funktion ist eine bessere Alternative.)quelle
$.inArray
Mal, wenn ich zu Beginn eines Codes einen Fehler behoben habe, stöhne ich. Auf jeden Fall sollte dies die akzeptierte Antwort sein.Wenn Sie ein bisschen ausgefallen sein möchten, können Sie die Operatoren bitweise not (~) und logisch not (!) Verwenden, um das Ergebnis der inArray-Funktion in einen booleschen Wert zu konvertieren.
quelle
Ich benutze normalerweise
oder
quelle
if( $.inArray("test", myarray) > -1 )
Die Methode jQuery inArray () wird verwendet, um einen Wert in einem Array zu suchen und seinen Index zurückzugeben, keinen booleschen Wert. Und wenn der Wert nicht gefunden wurde, wird -1 zurückgegeben.
Um zu überprüfen, ob ein Wert in einem Array vorhanden ist, gehen Sie wie folgt vor:
Referenz
quelle
Das
inArray
Funktion gibt den Index des als erstes Argument angegebenen Objekts an die Funktion im Array zurück, das als zweites Argument an die Funktion geliefert wurde.Wenn
inArray
zurückkommt0
wird angezeigt, dass das erste Argument an der ersten Position des angegebenen Arrays gefunden wurde.Um
inArray
innerhalb einer if-Anweisung zu verwenden, verwenden Sie:inArray
Gibt zurück,-1
wenn das erste an die Funktion übergebene Argument nicht in dem als zweites Argument übergebenen Array gefunden wird.quelle
Anstatt zu verwenden
jQuery.inArray()
, können Sie auch dieincludes
Methode für das int-Array verwenden:Überprüfen Sie den offiziellen Beitrag hier
quelle
jQuery.inArray () gibt den Index des Elements im Array zurück oder -1, wenn das Element nicht gefunden wurde. Lesen Sie hier mehr: jQuery.inArray ()
quelle
Es wird der Index des Elements im Array zurückgegeben. Wenn es nicht gefunden wird, erhalten Sie
-1
quelle
Wenn wir überprüfen möchten, ob sich ein Element in einer Reihe von Elementen befindet, können wir beispielsweise Folgendes tun:
quelle
Dies ist nützlich, um dynamische Variablen zu überprüfen. Diese Methode ist leicht zu lesen.
quelle
$.inArray()
führt genau das Gleiche aus wiemyarray.indexOf()
und gibt den Index des Elements zurück, dessen Existenz Sie im Array überprüfen. Es ist nur mit früheren Versionen von IE vor IE9 kompatibel. Die beste Wahl ist wahrscheinlich die Verwendung,myarray.includes()
die einen booleschen True / False-Wert zurückgibt. Im folgenden Snippet finden Sie Ausgabebeispiele für alle drei Methoden.quelle
$.inArray
dies der goldene Standard sein sollte, wenn Sie Zugriff auf die jQuery-Bibliothek haben. Andernfalls.indexOf
sollte stattdessen JavaScript mit einer Polyfüllung für IE8 verwendet werden. Halte dich fern von modernen Dingen wie.includes()
.Mann, überprüfen Sie das Dokument .
zum Beispiel:
quelle
Aus irgendeinem Grund funktioniert es nicht richtig, wenn Sie versuchen, nach einem jquery-DOM-Element zu suchen. Das Umschreiben der Funktion würde also den Trick machen:
quelle
quelle
Nur niemand benutzt
$
stattjQuery
:quelle
$
stattjQuery
.