如果存在于数组jquery中,请检查多个单词

时间:2015-10-03 15:35:28

标签: javascript jquery arrays

必须检查是否在textarea中写了一些遗产。为前('Zuzu max capsuni','Zuzu Max afine')等。

我的问题是我不知道如何为此做功能。我尝试使用这些单词创建一个数组,然后尝试使用indexOf()在textarea上找到它们。 如果我用小写字母书写的话,我没有成功地取得成功。有人有解决方案吗?感谢

<div>Button</div>
<textarea></textarea>


var words = ['Zuzu Max capsuni', 'Zuzu max piersici', 'Zuzu Max mere si pere', 'Zuzu Max afine', 'Zuzu Max stracciatella', 'Zuzu max natur'];
var text = $('textarea').val();
$('div').on('click', function(){
    if(text.indexOf(words)){
        console.log('match');
    }
});

忘记放jsfiddle

3 个答案:

答案 0 :(得分:2)

您需要遍历words数组并针对textarea字符串逐一检查它们。您的代码中的另一个问题是indexOf如果找不到字符串则返回-1,或者number表示搜索字符串的位置。

var textarea = $('textarea');
var words = ['Zuzu Max capsuni', 'Zuzu max piersici', 'Zuzu Max mere si pere', 'Zuzu Max afine', 'Zuzu Max stracciatella', 'Zuzu max natur'];

$('div').on('click', function(){
    var text = textarea.val();

    for (var i = 0, len = words.length; i < len; i++) {
        if (text.indexOf(words[i]) > -1) {
            console.log('match', words[i]);
        }
    }
});

你可以在这里看到一个工作小提琴:http://jsfiddle.net/22vuakp9/

不区分大小写:http://jsfiddle.net/22vuakp9/1/

答案 1 :(得分:0)

我的假设是数组“单词”包含您要检查的句子 对

首先将所有句子设为小写或大写。您可以使用UnderscoreJS 为此,你也可以自己动手。

见下文:

var words = ['Zuzu Max capsuni', 'Zuzu max piersici', 'Zuzu Max mere si pere'];

//using underscoreJS . See link: http://underscorejs.org/#map
wordsLowerCase = _.map(words, function(word) {
    return word.toLowerCase();
});


var text = $('textarea').val().toLowerCase();

$('div').on('click', function() {

    wordsLowerCase.forEach(function(word) {
        if (text.indexOf(word) > -1) {
            console.log('match');
        }
    });

});

注意:您可以通过多种方式实现目标。这只是其中一种方式。

哪种方式最好?这取决于。

我希望你觉得这很有用。

干杯!

答案 2 :(得分:-2)