检查对象是否存在于另一个对象中

时间:2014-07-01 22:50:47

标签: javascript object

我有一个这样的对象:

var obj = {

 heroes: {
        "1": {
          label: "Spiderman"
        },
        "2": {
          label: "Iron Man"
        },
       }
}

我想知道的是,是否存在对象,例如2在 obj.heroes

我尝试了这个,但它不起作用:

var name = "heroes"; //Will be a for-loop later
try {
        if(name["2"] in obj) 
            console.log("There is an 2nd superhero!");

    } catch(e) {console.log(e);}

..只有错误:“无法读取未定义的属性'2'

我希望你能帮到我。感谢

4 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

try {
  console.log(obj.heroes["2"]);
} catch (e) {
  console.log('nope :c');
}

但是,最好将heroes存储为数组:

var obj = {
  heroes: [
    {
      label: 'Spiderman'
    },
    {
      label: 'Ironman'
    }
  ]
};

使用数组更有意义,因为heroes由多个hero对象组成。

答案 1 :(得分:1)

尝试

   if ("2" in obj[name]){
      console.log("There is an 2nd superhero!");
   }

但是如果你试图识别计数,那么使用数组可能会更好

var obj = {
   heroes: [
            {label: "Spiderman"},
            {label: "Iron Man"}
           ]
}

并查看

if (obj[name].length > 1) {
    console.log("There is an 2nd superhero!");
}

答案 2 :(得分:0)

如果第二个超级英雄不存在,则该条件返回false。

if(obj.heroes["2"]) 
    console.log("There is an 2nd superhero!");

或者:

var count = 0;
for (var x in obj.heroes) {
    if (obj.heroes.hasOwnProperty(x)) {
       count++;
    }
}
console.log("You see "+ count +" heroes.");

答案 3 :(得分:0)

此代码将为您搜寻

var delve = function(object, property, dodge) {
        if (!dodge) dodge = object;
        for (var i in object) {
            if (object[i] === dodge) continue;
            if (typeof(object[i]) == typeof({})) this.delve(object[i], property, dodge)
            if (i == property) console.log(object[i]);
        }
    }
delve(heroes,'2')