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