417 Stimmen

JQuery.inArray(), wie benutzt man es richtig?

Erste Mal arbeite ich mit jQuery.inArray() und es verhält sich irgendwie seltsam.

Wenn das Objekt im Array ist, gibt es 0 zurück, aber 0 ist in Javascript falsch. Also wird das Folgende ausgegeben: "ist NICHT im Array"

var myarray = [];
myarray.push("test");

if(jQuery.inArray("test", myarray)) {
    console.log("ist im Array");
} else {
    console.log("ist NICHT im Array");
}

Ich muss die if-Anweisung ändern zu:

if(jQuery.inArray("test", myarray)==0)

Aber das macht den Code schwer lesbar. Besonders für jemanden, der diese Funktion nicht kennt. Sie würden erwarten, dass jQuery.inArray("test", myarray) true gibt, wenn "test" im Array ist.

Also meine Frage ist, warum wird das auf diese Weise gemacht? Ich mag das wirklich nicht. Aber es muss einen guten Grund dafür geben, es so zu machen.

14voto

Kevin Bowersox Punkte 90706

Die inArray-Funktion gibt den Index des als erstes Argument an die Funktion gelieferten Objekts im als zweites Argument an die Funktion gelieferten Array zurück.

Wenn inArray 0 zurückgibt, wird damit angezeigt, dass das erste Argument an der ersten Position im gelieferten Array gefunden wurde.

Verwenden Sie inArray innerhalb einer if-Anweisung wie folgt:

if(jQuery.inArray("test", myarray) != -1) {
    console.log("ist im Array");
} else {
    console.log("ist NICHT im Array");
}

inArray gibt -1 zurück, wenn das als erstes Argument an die Funktion übergebene Argument im als zweites Argument übergebenen Array nicht gefunden wurde.

14voto

Jason Watmore Punkte 4342

Oder wenn Sie etwas raffinierter werden möchten, können Sie die bitweise Negation (~) und die logische Negation (!) Operatoren verwenden, um das Ergebnis der inArray-Funktion in einen Booleschen Wert umzuwandeln.

if(!!~jQuery.inArray("test", myarray)) {
    console.log("ist im Array");
} else {
    console.log("ist NICHT im Array");
}

14voto

Hassan Amir Khan Punkte 635

Die Methode jQuery inArray() wird verwendet, um einen Wert in einem Array zu suchen und seinen Index zurückzugeben, nicht einen 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, befolgen Sie die folgende Vorgehensweise:

myArray = new Array("php", "tutor");
if( $.inArray("php", myArray) !== -1 ) {

    alert("gefunden");
}

Referenz

12voto

Sahi Repswal Punkte 117

inArray gibt den Index des Elements im Array zurück. Wenn das Element nicht gefunden wurde, wird -1 zurückgegeben, ansonsten der Index des Elements.

if(jQuery.inArray("Element", meinArray) === -1) {
    console.log("Existiert nicht im Array");
} else {
    console.log("Existiert im Array");
}

9voto

DDan Punkte 7698

Ich benutze normalerweise

if(!(jQuery.inArray("test", myarray) < 0))

oder

if(jQuery.inArray("test", myarray) >= 0)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X