2016-04-14 21 views
-2

Ich versuche zu überprüfen, ob ein Element bereits in einem Array vorhanden ist. Ich kenne mindestens 2 verschiedene Möglichkeiten: [1] und [2].Suche nach Element im Array

Getestet habe ich sie beide, aber no in beiden Fällen erhalten:

var myArray = ["Banana", "Orange", "Apple", "Mango"]; 

if ("Banana" in myArray) { 
    console.log("yes") 
} else { 
    console.log("no") // <-- 
} 

if (typeof myArray["Banana"] === 'undefined') { 
    console.log("no") // <-- 
} else { 
    console.log("yes") 
} 

In beiden Fällen ich no bekommen. Fehle ich etwas?

Auch, welche von ihnen ist schneller?

.

Antwort

7

Beide tun das fast die gleiche Sache: Überprüfen, ob myArray eine Eigenschaft namens "Banana" hat, was es nicht tut; Es hat Tasten 0,1,2, und 3, und der Wert bei myArray[0] passiert zufällig "Banana".

Wenn Sie überprüfen wollen, ob ein String in einem Array ist, können Sie verwenden Array.prototype.indexOf:

if(myArray.indexOf("Banana") >= 0) { 
    console.log("yes") 
} else { 
    console.log("no") 
} 
+0

Warum schließen Sie die Frage nicht als Duplikat? –

+0

Arrays haben Elemente. Eigenschaften sind möglich, aber "Banane" ist keine Eigenschaft, nur ein Element. –

+0

@ZachSaucier Das Duplikat beschreibt, wie zu überprüfen, aber nicht, warum die OPs Methoden nicht funktioniert. – Paulpro

0

Sie sind, in beiden Fällen sucht die bananath (+1) Element des Arrays, Das ist nicht korrekt.

In beiden Fällen sollte das erste nicht verwendet werden (auch wenn es zu diesem Zweck diente), da es nicht für Arrays gedacht ist, da es nach Eigenschaften sucht.

Verwandte Themen