检查嵌套对象中是否存在对象成员

Jus*_*ago 25 javascript object

有没有比使用更简单的方法___ in object检查对象的每个级别的存在来检查单个成员的存在?

更简洁:我如何检查someObject.member.member.member.value是否存在?

Fel*_*ing 33

通常,您可以使用if(property in object),但这对于嵌套成员来说仍然很麻烦.

你可以写一个函数:

function test(obj, prop) {
    var parts = prop.split('.');
    for(var i = 0, l = parts.length; i < l; i++) {
        var part = parts[i];
        if(obj !== null && typeof obj === "object" && part in obj) {
            obj = obj[part];
        }
        else {
            return false;
        }
    }
    return true;
}

test(someObject, 'member.member.member.value');
Run Code Online (Sandbox Code Playgroud)

DEMO

  • 很抱歉中断,但......有人在这里提到"帕特里克的回答"更快.呃...这个答案在哪里?: - ? (2认同)

小智 7

你还可以尝试/捕获TypeError?

try {
  console.log(someObject.member.member.member.value);
} catch(e) {
  if (e instanceof TypeError) {
    console.log("Couldn't access someObject.member.member.member.value");
    console.log(someObject);
  }
}
Run Code Online (Sandbox Code Playgroud)