验证对象中是否存在深属性

时间:2014-06-13 00:31:55

标签: javascript jquery

例如,我想看看response.objects[0].images[0].url是否存在(并且不是空的)

验证对象中是否存在url属性的最佳方法是什么?

如果我刚刚做了

if (response.objects[0].images[0].url !== undefined && response.objects[0].images[0].url !== null {
  console.log(response.objects[0].images[0].url);
}

但如果url之前的任何属性本身未定义或为null,则可能导致问题。

我是否应该深度嵌套并验证以前的每个属性是否都不为空且未定义?

1 个答案:

答案 0 :(得分:1)

使用解析器:

function resolve(start) {
    return [].slice.call(arguments, 1).reduce(function(obj, prop) {
        return obj && obj[prop];
    }, start);
}


resolve(response, "objects", 0, "images", 0, "url");

如果它返回undefined,那么一路上的东西变坏了......