Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 禁词检查器_Javascript_Arrays_Include - Fatal编程技术网

Javascript 禁词检查器

Javascript 禁词检查器,javascript,arrays,include,Javascript,Arrays,Include,我是新手,但我的问题是: 我试图检查html输入的值是否包含数组中的某个禁止字 我试过: 使用split,在数组中转换input.value,然后相互比较。 使用toString将数组转换为字符串,然后比较两者。 将字符串与所有单词wordone wordtwo wordthree一起使用,而不是数组[wordone,wordtwo,wordthree]。 拆分上面的字符串,然后进行比较。 和上面示例的一些变体,但始终使用includes方法进行检查。 我真的不明白为什么什么都不管用 当我在数组

我是新手,但我的问题是:

我试图检查html输入的值是否包含数组中的某个禁止字

我试过:

使用split,在数组中转换input.value,然后相互比较。 使用toString将数组转换为字符串,然后比较两者。 将字符串与所有单词wordone wordtwo wordthree一起使用,而不是数组[wordone,wordtwo,wordthree]。 拆分上面的字符串,然后进行比较。 和上面示例的一些变体,但始终使用includes方法进行检查。 我真的不明白为什么什么都不管用

当我在数组中只放置一个禁止的单词时,它就起作用了

如果我在输入元素上写入多个单词,即使数组中只有一个单词,它也不起作用

以下是HTML:

<input id="field" type="text" size="100">
<button id="check">check</button>
<p id="announce">Message</p>
以下是JS:

    fieldIncludes() {

    let field = document.querySelector('#field'); //gets the field
    let btn = document.querySelector('#check'); //gets the check-field button
    let messageBox = document.querySelector('#announce'); // gets the <p> to show a message

    let forbiddenWords = ['wordOne', 'wordTwo', 'wordThree'];

    btn.addEventListener("click", () =>  {

        if (field.value.includes(forbiddenWords)){

            messageBox.innerHTML = "Forbidden!";

        } else {
            messageBox.innerHTML = "Okay :)";
        }

    })

}
请忽略JS在类中。

includes的参数应该是一个要检查的字符串,它不会自动循环数组。您可以使用.some方法检查它们是否匹配

if (forbiddenWords.some(word => field.value.includes(word))) {
    messageBox.innerHTML = "Forbidden!";
} else {
    messageBox.innerHTML = "Okay";
}
includes的参数应该是要检查的单个字符串,它不会自动在数组上循环。您可以使用.some方法检查它们是否匹配

if (forbiddenWords.some(word => field.value.includes(word))) {
    messageBox.innerHTML = "Forbidden!";
} else {
    messageBox.innerHTML = "Okay";
}

希望我没有误会你


    var str = 'you plays like a noob';
    
    function inspect_string(str, arr){
        flag = false; 
        arr.forEach(ar=>{
            flag = str.match(new RegExp(ar)) ? true : false;
        });
        return flag
    }
    
    // var arr = ['noob', 'trash'];
    var arr = ['nice', 'good'];
    console.log(inspect_string(str, arr));


希望我没有误会你


    var str = 'you plays like a noob';
    
    function inspect_string(str, arr){
        flag = false; 
        arr.forEach(ar=>{
            flag = str.match(new RegExp(ar)) ? true : false;
        });
        return flag
    }
    
    // var arr = ['noob', 'trash'];
    var arr = ['nice', 'good'];
    console.log(inspect_string(str, arr));


请注意,这种情况也很重要。Foo-bar.includes'Foo'将为false,但Foo-bar.toLowerCase.includes'Foo'将为true请注意,大小写也很重要。Foo-bar.includes'Foo'将为false,但Foo-bar.toLowerCase.includes'Foo'将为true