it-swarm.com.de

Wie überprüfe ich, ob ein String-Array in JavaScript einen String enthält?

Ich habe ein String-Array und einen String. Ich möchte diese Zeichenfolge mit den Array-Werten testen und eine Bedingung für das Ergebnis anwenden. Wenn das Array die Zeichenfolge enthält, tue "A", andernfalls tue "B".

Wie kann ich das machen?

211
gtludwig

Es gibt eine indexOf -Methode, über die alle Arrays (mit Ausnahme von Internet Explorer 8 und niedriger) verfügen, die den Index eines Elements im Array oder -1 zurückgibt, wenn es nicht im Array enthalten ist:

if (yourArray.indexOf("someString") > -1) {
    //In the array!
} else {
    //Not in the array
}

Wenn Sie alte IE Browser unterstützen müssen, können Sie diese Methode mithilfe des Codes in dem MDN-Artikel polyfüllen.

384
James Allardice

Sie können die indexOfMethode verwenden und die Array-Klasse mit der Methode contains wie folgt "erweitern":

Array.prototype.contains = function(element){
    return this.indexOf(element) > -1;
};

mit folgenden Ergebnissen:

["A", "B", "C"].contains("A") entspricht true

["A", "B", "C"].contains("D") entspricht false

54
fableal
var stringArray = ["String1", "String2", "String3"];

return (stringArray.indexOf(searchStr) > -1)
25
FixMaker

Erstellen Sie diesen Funktionsprototyp:

Array.prototype.contains = function ( needle ) {
   for (i in this) {
      if (this[i] == needle) return true;
   }
   return false;
}

und dann können Sie folgenden Code verwenden, um in Array x zu suchen

if (x.contains('searchedString')) {
    // do a
}
else
{
      // do b
}
8
eridanix

Dies wird es für Sie tun:

function inArray(needle, haystack) {
    var length = haystack.length;
    for(var i = 0; i < length; i++) {
        if(haystack[i] == needle)
            return true;
    }
    return false;
}

Ich fand es in der Stapelüberlauf-Frage JavaScript-Äquivalent zu PHP's in_array ().

5
ollie