Javascript JS检索深字段,同时忽略沿途丢失的字段

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']) { ... } 写起来很简单,但我想知道最流行的方法是什么?我可以想象这样的

是否有一种简单的方法或流行的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']);
注意:我不是在寻找代码来实现这一点。就像我说的,实现起来很简单。我对最常用的方法感兴趣。一定有一些不错的模式不需要编写函数,或者有一个预先存在的函数可以使用。

函数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

.

如果任何级别都不存在,您希望得到什么?如果任何级别都为空,则只是未定义。请查看以下内容: