Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Switch Statement_Indexof - Fatal编程技术网

Javascript 是否有方法检查数组中的多个值?

Javascript 是否有方法检查数组中的多个值?,javascript,arrays,switch-statement,indexof,Javascript,Arrays,Switch Statement,Indexof,我使用indexOf检查JSON twitter提要中的某些字符串。我希望能够让多个字符串触发同一事件 我编写了一个开关,如果您只在数组中查找单个属性,但找不到执行此操作的方法,它就可以工作 我的第一个想法是尝试 switch(true) { case tweetContent.indexOf(Happy[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) !== -1: // do a thing break; 你可以在

我使用indexOf检查JSON twitter提要中的某些字符串。我希望能够让多个字符串触发同一事件

我编写了一个开关,如果您只在数组中查找单个属性,但找不到执行此操作的方法,它就可以工作

我的第一个想法是尝试

switch(true) {
case tweetContent.indexOf(Happy[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) !== -1: 
    // do a thing
break;  
你可以在下面的上下文中看到。我在这里真的迷路了

$.getJSON("tweets_JSON.php?count=5").done(function(json) {

    console.log(json[0])

    var Happy = ["hashtag1", "#hashtag2", "#hashtag3"];

    var Sad = ["#hashtag4", "#hashtag5", "#hashtag6"];

    var AgencyLife = ["#hashtag7", "#hashtag8", "#hashtag9"];

    var tweetContent = json[0].text;

    // Searchs text property of first tweet in feed for triggers

    switch(true) {
    case tweetContent.indexOf(Happy[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) !== -1: 
        console.log("horray!");
    break; 
    case tweetContent.indexOf() !== -1: 
        console.log("boo!");
    break;
    case tweetContent.indexOf() !== -1:
        console.log("boo!");
    break;
    case tweetContent.indexOf() !== -1:
        console.log("boo!");
    break;
    case tweetContent.indexOf() !== -1:
        console.log("boo!");
    break;
    default:
        console.log("No Trigger Found. Light State unchanged.");
    break;        
    }        

});

我不知道你到底想在这里做什么,但我可以给你一个想法

是否有方法检查数组中的多个值

您可以将数组连接到长字符串,并使用RegExp测试值:

var arr = ["hello", "good", "day", "twitter"];
var joindArr = arr.join(); // Or use delimiter arr.join('*’)
joindArr.match(/twitter|hello/g); // Return value will be array of matches 
如果只需要知道数组中是否存在一个值,请检查匹配数组的长度。就你而言:

case joindArr.match(/twitter|hello/g).length > 0:

您应该能够使用$.grep执行此操作

var happy_matches = $.grep(Happy, function( hashtag, i ) {
  return tweetContent.indexOf("hashtag");
});

很抱歉我解释得很糟糕。基本上,我要做的是对从JSON数据中提取的字符串进行索引,然后查看它是否包含来自预定义数组的一个或多个值。有多个数组,但单个数组中的每个值都会触发同一事件。我使用的是switch语句,但我不想为每个数组中的每个数组值编写一个case,因为那将是大量的case。基本上,它归结为这个字符串是否包含来自另一个数组的任何值?如果不是,它是否包含来自其他数组的任何值?更有意义吗?是的,你可以用我上面提供的。将预定义数组转换为RegExp。现在,您可以将每个数组连接到一个长字符串,然后将这些字符串连接到一个很长的字符串,并检查是否匹配。如果至少有一个匹配项,则答案为“是”,否则任何数组中都没有预定义的值