Ich möchte eine Zeichenfolge für mehrere Zeichenfolgen suchen, und das Rück true
wenn es dort eine von ihnen findet in, false
sonst, so etwas wie:Wie finde ich ein Array von Strings in einem String?
var s = "thing1 thing2"
s.contains(["thing1","thing44444"]) // true
s.contains("1") // true
s.contains("x") // false
Hier ist, was habe ich so weit, aber es wird immer messier und funktioniert nicht richtig:
String.prototype.contains = function(xv) {
var t = this
if(xv.isString()){ // isString/isArray are functions I made elsewhere in my code, they work.
if(t.indexOf(xv) > -1)
return true;
} else if(xv.isArray()) {
if(xv.contains(t)){
return true
}
for(v in xv){
if(t.indexOf(xv[v]) > -1){
return true
}
}
} else {
return false
}
}
Ab jetzt wird es undefined
zurück, wenn sie es durch die for
Schleife macht, ohne etwas zu finden. Ich hatte return false
nach der for
Schleife, aber es würde laufen, bevor die for
beendet.
Ich habe das Gefühl, dass es einen einfacheren Weg geben muss.
Ich habe bereits versucht How do you search multiple strings with the .search() Method?, aber ich konnte ein Array nicht an .search()
senden.
Frameworks Ich verwende: Winkel 1.5.8, jquery 1.11.1
„Ich hatte nach dem return false for-Schleife, aber es würde vor dem für fertig laufen. " Dies ist mit dem Code in Ihrem Beispiel nicht möglich. – zzzzBov
Vielleicht möchten Sie den Prototyp der eingebauten Objekte überdenken oder zumindest sicherstellen, dass Sie das Polyfilling korrekt durchführen. Siehe auch [Warum ist die Erweiterung nativer Objekte eine schlechte Methode?] (Http://stackoverflow.com/q/14034180/215552). Zum Beispiel ist ['Array.isArray'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray) bereits eine Funktion in neueren Versionen von JavaScript und Angular hat bereits ['angular.isString()'] (https://docs.angularjs.org/api/ng/function/angular.isString) ... –
@MikeMcCaughan aus der ersten Antwort, die Sie zitiert haben: "Das Verhalten von Ein Objekt, das nur von Ihrem eigenen Code verwendet wird, ist in Ordnung. " Ich schätze jedoch die Referenzen. Viele gute Infos hier. Danke Bruder. –