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

Javascript 检查对象是否存在于另一个对象中,javascript,object,Javascript,Object,我有一个这样的物体: var obj = { heroes: { "1": { label: "Spiderman" }, "2": { label: "Iron Man" }, } } 我想知道的是,在obj.heroes中是否有对象,例如2 我试过这个,但没用: var name = "heroes"; //Will be a for-loop later try {

我有一个这样的物体:

var obj = {

 heroes: {
        "1": {
          label: "Spiderman"
        },
        "2": {
          label: "Iron Man"
        },
       }
}
我想知道的是,在obj.heroes中是否有对象,例如2

我试过这个,但没用:

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”


我希望你能帮助我。谢谢

您可以执行以下操作:

try {
  console.log(obj.heroes["2"]);
} catch (e) {
  console.log('nope :c');
}
但是,最好将英雄存储为数组:

var obj = {
  heroes: [
    {
      label: 'Spiderman'
    },
    {
      label: 'Ironman'
    }
  ]
};
使用数组更有意义,因为
英雄
由多个
英雄
对象组成。

试试看

   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!");
}

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

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


此代码将为您查找它

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')

您正试图访问
name
对象(字符串)中名为
2
的属性。从其中大多数的if(name[“2”])副本中删除属性访问器:区别到底在哪里?表演?好的风格?只是为了提升我的基础知识。如果
“2”
具有内在价值,那么您应该保留原始代码,另一方面,如果2只是表示它是第二项,那么您应该使用数组。它是作业的正确工具,而且它的属性和方法更适合于迭代/计数/添加/删除。。等
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')