如何检查嵌套数组是否包含值?

时间:2014-08-17 12:06:53

标签: javascript arrays

所以我有这个数组:

   var watchesArray = [
        {
          model: "FR 10", 
          image:"",
          url: "",
          price: 129.99,
          sports: ["Running", "Fitness"],
          touchScreen:false,
          GPS:false,
          heartRateMonitor:false,
          hrZoneTraining:false,
        },
    ];

    if(watchesArray[0].sports(contains a specific value or values){
      do something
    } else {
       dont do anything
    }

我想要做的就是检查这只手表是否具有特定的运动,如果确实如此,则将其置于if语句中以便我可以使用它。

我该怎么做?感谢

5 个答案:

答案 0 :(得分:2)

使用Array.indexOf如下文

if(watchesArray[0].sports.indexOf('Running') > -1){
    do somwthing
}

注意: - 如果父母不存在,则会抛出错误。

答案 1 :(得分:1)

它只是一个数组,即使它是“嵌套的”:

if (watchesArray[0].sports.indexOf('Running') !== -1) ...

如果它是第一个索引,则返回0,因此您必须检查-1(“未找到”)。

请注意,IE7 / 8不支持Array.prototype.indexOf(),但如果需要,还有polyfill方式。

答案 2 :(得分:0)

所有浏览器都没有支持的简单功能,但您可以编写以下代码:

function contains(a, obj) {
    var i = a.length;
    while (i--) {
       if (a[i] === obj) {
           return true;
       }
    }
    return false;
}

有关详细信息,请查看此答案 How do I check if an array includes an object in JavaScript?

答案 3 :(得分:0)

您可以像这样尝试indexof:

var watchesArray = [
                     {
                       model: "FR 10", 
                       image:"",
                       url: "",
                       price: 129.99,
                       sports: ["Running", "Fitness"],
                       touchScreen:false,
                       GPS:false,
                       heartRateMonitor:false,
                       hrZoneTraining:false,
                     },
                 ];

 if (watchesArray[0].sports.indexOf('hello') != -1){
                     alert("exists");
                 } else {
                     alert("this index does not exist");
                 }

对于javascript中的数组,您始终可以使用指定的键遍历。如果密钥不存在,indexof将返回0,因此它将转到else部分。

答案 4 :(得分:0)

正如Jared所说,你可以使用Array.indexOf()

  

indexOf()方法返回可在数组中找到给定元素的第一个索引,如果不存在则返回-1。

在你的情况下,这意味着

if(watchesArray[0].sports.indexOf(value) !== -1){
  do something
} else {
   dont do anything
}

我还为您提供了一个匹配多个值的函数:jsbin