我有一个这样的对象:
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'
我希望你能帮到我。感谢
答案 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')