2017-12-12 32 views
0

Ich finde nicht, was ich im Internet brauche, oder vielleicht verwende ich keine richtigen Worte, aber hier ist mein Problem.Überprüfen Sie, ob die Zeichenfolge ein Array mit Schlüsselwort enthält

Ich habe eine Zeichenfolge für Beispiel: Ok bot, zeigen Sie mir das Dokument des Foo-Programms.

Und es ist meine Keywords: ["bot","doc", "show", "Foo"]

Ich möchte, dass, wenn die Zeichenfolge 3 Schlüsselwort enthält oder mehr, meine Funktion eine Nachricht für exemple

zurückkehren werde ich denken über

var message = "Ok bot, show me the doc of the Foo program."; 
 
var keywords = ["bot","doc","show","foo"]; 
 
if(keywords.indexOf(message) >=3){ 
 
    console.log('ok I understand'); 
 
}

Aber es funktioniert nicht

Kann mir bitte jemand helfen?

Danke

Antwort

2

Sie rufen die indexOf Funktion, die die Elemente in einem Array zurückgibt. In Ihrem Fall überprüfen Sie message in den Array-Keywords, die logisch falsch ist

Sie können die gefundenen Keywords über Array#filter und String#includes filtern und dann überprüfen Sie ihre Länge.

var message = "Ok bot, show me the doc of the Foo program."; 
 
var keywords = ["bot","doc","show","foo"]; 
 

 
var keywordsFound = keywords.filter(item => message.includes(item)); 
 

 
if(keywordsFound.length >= 3) { 
 
    console.log('ok I understand'); 
 
}

+0

Vielen Dank, es funktioniert perfecly! – BarbeBleue

+0

sollten Sie Ihren Einschlusslink bearbeiten, um dieser zu sein: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes –

+0

@MikeCheel Thanks –

Verwandte Themen