在我的代码中,我处理的是一个数组,其中包含许多嵌套在另一个中的对象的条目,其中有些不这样做。它看起来像下面这样:如何避免'无法读取未定义的属性'错误?
// where this array is hundreds of entries long, with a mix
// of the two examples given
var test = [{'a':{'b':{'c':"foo"}}}, {'a': "bar"}];
这是给我的问题,因为我需要通过在次阵列进行迭代,并不一致是扔我的错误,像这样:
for (i=0; i<test.length; i++) {
// ok on i==0, but 'cannot read property of undefined' on i==1
console.log(a.b.c);
}
我知道我可以说if(a.b){ console.log(a.b.c)}
,但是如果有多达5个或6个对象嵌套在一起,这是非常乏味的。有没有其他(更简单)的方式,我可以只做console.log(如果存在),但不会抛出错误?
错误可能是一个正常的Javascript异常,所以请尝试'try..catch'语句。也就是说,包含非常多元素的数组看起来像是一个设计问题。 – millimoose 2013-02-08 22:17:57
如果您的结构在各个项目中不一致,那么检查存在有什么问题?真的,我会使用if(“b”在a.b)中的&&“c”中)。这可能是“乏味”的,但这就是你得到的不一致......正常的逻辑。 – Ian 2013-02-08 22:21:49
你为什么要访问不存在的属性,为什么你不知道对象是怎么样的? – Bergi 2013-02-08 22:22:06