Testen, ob eine Variable einen beliebigen Wert aus einem Array enthält | JS?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet
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

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

AgentDoppelP 
Beitragsersteller
 01.07.2021, 10:40

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

0
MrAmazing2  01.07.2021, 15:15
@AgentDoppelP

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

0
MrAmazing2  01.07.2021, 16:07
@AgentDoppelP
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));
0
AgentDoppelP 
Beitragsersteller
 01.07.2021, 16:12
@MrAmazing2

ich versuchs mal damit und probier das zu verstehen danke

1

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
Woher ich das weiß:Berufserfahrung – Entwickle Webseiten seit über 25 Jahren.

Explizit ist der klassische Algorithmus iterativ:

  1. Definiere ein Boolean enthaeltTeilwort und setze ihn auf false.
  2. Iteriere über die Liste und prüfe für jedes Element, ob es im Wort enthalten ist. Wenn ja, setze enthaeltTeilwort auf true.
  3. 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;

MrAmazing2  29.06.2021, 22:51

JS hat ein paar sehr nützliche Array-Funktionen, solltest du dir mal anschauen :D

2
Willibergi  30.06.2021, 13:00
@MrAmazing2

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.

1