是否有一种简单的方法或流行的NodeJS库允许在Javascript中检索JSON对象中的深字段而无需在每个级别检查null?例如,在尝试解析此对象时:
var o = {"a": {"b": {"c": {"d": 1}}}}
如果我想要d
的值,我必须做类似
if (o && o['a'] && o['a']['b'] && o['a']['b']['c']) { ... }
写作很简单,但我想知道最流行的方法是什么?我可以想象像:
var value = deepGet(o, ['a', 'b', 'c', 'd']);
注意:我不是在寻找代码来执行此操作。就像我说的那样,实施它是微不足道的。我对最常用的方法感兴趣。必须有一些不需要编写函数的好模式,或者有一个可以使用的预先存在的函数。
答案 0 :(得分:0)
function deepGet (obj, key_array) {
for (var i = 0; obj && i < key_array.length; obj = obj[key_array[i++]]) ;
return obj;
}
答案 1 :(得分:0)
你可以这样做:
function deepGet(obj, path) {
var segment = path[0];
if(path.length === 1) {
return obj[path[0]];
}
else if(obj[segment]) {
return deepGet(obj[segment], path.slice(1));
}
else {
return undefined;
}
}
答案 2 :(得分:0)
您可以这样做:
var o = {"a": {"b": {"c": {"d": 1}}}};
var value = deepGet(o, ['a', 'b', 'c', 'd']);
function deepGet(obj, pathArr){
var curr = obj;
for(var i = 0 ; i < pathArr.length && curr ;i++)
{
curr = curr[pathArr[i]];
}
return curr;
}
console.log(value); // 1