Javascript JS检索深字段,同时忽略沿途丢失的字段
是否有一种简单的方法或流行的NodeJS库允许在Javascript中检索JSON对象中的深字段,而不必在每个级别检查null?例如,尝试分析此对象时:Javascript JS检索深字段,同时忽略沿途丢失的字段,javascript,json,node.js,parsing,Javascript,Json,Node.js,Parsing,是否有一种简单的方法或流行的NodeJS库允许在Javascript中检索JSON对象中的深字段,而不必在每个级别检查null?例如,尝试分析此对象时: var o = {"a": {"b": {"c": {"d": 1}}}} 如果我想要d的值,我必须执行以下操作 if (o && o['a'] && o['a']['b'] && o['a']['b']['c']) { ... } 写起来很简单,但我想知道最流行的方法是什么?我可以想象这样的
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']);
注意:我不是在寻找代码来实现这一点。就像我说的,实现起来很简单。我对最常用的方法感兴趣。一定有一些不错的模式不需要编写函数,或者有一个预先存在的函数可以使用。函数deepGet(obj,key\u数组){
function deepGet (obj, key_array) {
for (var i = 0; obj && i < key_array.length; obj = obj[key_array[i++]]) ;
return obj;
}
对于(变量i=0;obj&&i
您可以这样做:
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;
}
}
您可以这样做:
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
var o={“a”:{“b”:{“c”:{“d”:1}};
var值=deepGet(o,['a','b','c','d']);
函数deepGet(obj,pathArr){
var curr=obj;
对于(变量i=0;i
.如果任何级别都不存在,您希望得到什么?如果任何级别都为空,则只是未定义。请查看以下内容: