Testen, ob eine Variable einen beliebigen Wert aus einem Array enthält | JS?
Ich bin absoluter Anfänger, nur im Voraus. Ist es möglich, anstatt bei jedem einzelnen Wert zu testen, ob er in der Variable enthalten ist, einfach zu testen, ob in der Variable, ein beliebiger Wert, beispielsweise ein Buchstabe enthalten ist, der auch in einem Array enthalten ist?
Also wenn wir eine Variable mit einem Text haben...
let str = "Hello World!";
und ein Array mit gewissen Buchstaben...
let arr = ["a","b","h"];
dass wir dann nicht prüfen
ist da jetzt a enthalten, ist da jetzt b enthalten...
sondern einfach:
ist in str ein Wert enthalten, der auch in arr ist
in dem Fall ist h enthalten
mein Ziel ist es dass er dann zurück gibt: ja es ist ein wert enthalten (boolean), also true
danke
ps bitte nicht ZU kompliziert
3 Antworten
arr.some(x => str.includes(x));
Gibt ein Boolean zurück, das angibt, ob in str ein Wert enthalten ist, der auch in arr ist
Dafür einfach den String Zeichen für Zeichen durchgehen, schauen ob das jetzige Zeichen in arr ist && das nächste Zeichen in art ist && das jetzige Zeichen != das nächste Zeichen ist
let arr = ["a","b","h"];
let str = "hallo World!";
function containsAdjacent(str, arr) {
for (let i = 0; i < str.length-1; i++) {
if (arr.includes(str[i]) && arr.includes(str[i+1]) && str[i] != str[i+1]) return true;
}
return false;
}
console.log(containsAdjacent(str, arr));
ich versuchs mal damit und probier das zu verstehen danke
Eine weitere Möglichkeit wäre ein Regulärer Ausdruck:
let str = "Hello World!";
let arr = ["a","b","h"];
const regex = RegExp('[' + arr.join('') + ']')
const found = regex.test(str) // false
Explizit ist der klassische Algorithmus iterativ:
- Definiere ein Boolean enthaeltTeilwort und setze ihn auf false.
- Iteriere über die Liste und prüfe für jedes Element, ob es im Wort enthalten ist. Wenn ja, setze enthaeltTeilwort auf true.
- Der Wert der Variable enthaeltTeilwort enthält nun die Antwort.
Oder kürzer im funktionalen Stil:
let str = "Hello World!";
let arr = ["a","b","h"];
let enthaeltTeilwort = arr.filter(wort => str.includes(wort)).length > 0;
JS hat ein paar sehr nützliche Array-Funktionen, solltest du dir mal anschauen :D
JavaScript geschweige denn Frontend überhaupt ist leider nicht mehr wirklich meine Baustelle. Bis ES6 war ich noch relativ gut im Bilde, danach bin ich abgedriftet und bis heute leider nicht mehr zurückgekehrt ;-) aber ja, vielleicht sollte ich mich in Frontend-Technologien tatsächlich mal wieder ein bisschen auffrischen.
das hat super funktioniert, danke. aber was ist jetzt, wenn ich testen will, ob zwei verschiedene im array enthaltene Werte hintereinander kommen? ich habe es hinbekommen, dass er erkennt, wenn zwei mal x hintereinander kommt, aber was wenn erst x und dann y hintereinanderkommt? kann man das auch einrichten