在代码中的许多地方,我执行以下操作来访问深层嵌套属性:
if (a && a.b && a.b.c && a.b.c.d) {
//do something with a.b.c.d
}
鉴于 a、b、c 和 d 具有更复杂的名称,这很丑陋、耗时,并且容易发生错误。
有没有一种“糖衣”的方法来处理这个问题?像这样:
if (valid(a.b.c.d)) {
//do something with a.b.c.d
}
最佳答案
您可以使用递归辅助函数来执行此操作,例如:
function valid(obj, chain) {
if (!chain.length) {
return true;
}
var prop = chain.shift();
return !obj.hasOwnProperty(prop) ? false : valid(obj[prop], chain);
}
var a = { b: { c: { d: 1 } } };
console.log(valid(a, ['b', 'c', 'd'])); // true
console.log(valid(a, ['b', 'c', 'e'])); // false
关于javascript - 如何轻松验证深层嵌套对象属性是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34991922/