javascript / lodash:由于子树对象,如何对对象进行递归深度获取

尔万·勒杜(Erwan Ledoux)

假设我有一个像这样的深层物体

cont obj = { 
   a0: { 
     b0: { 
       c0: 0, 
       c1: 1 
      }, 
      b1: { 
       c2: 2
      } 
     }
 }

我想用一种方法用这种api检索它的子树,让我们将其命名为'retrieveDeep':

const subObj = retrieveDeep(
 obj,
 {
  a0: {
    b0: {
      c0: null
    },
    b1: {
      c2: null
    }
  }
 } 
)
// should return 
// { 
//   a0: { 
//     b0: { 
//       c0: 0
//      }, 
//      b1: { 
//       c2: 2
//      } 
//     }
// } 

实际上,我知道我可以从头开始,没有太多困难,但是如果已经有lodash(甚至看起来像graphQL api形状!)函数,我很高兴知道它是tx

妮娜·斯科茨(Nina Scholz)

只需遍历模式的属性并对对象进行递归调用即可。分配原始值。

function retrieveDeep(object, pattern) {
    function iter(o, p, r) {
        Object.keys(p).forEach(function (k) {
            if (k in o) {
                if (typeof o[k] === 'object' && o[k] !== null) {
                    r[k] = {};
                    iter(o[k], p[k], r[k]);
                    return;
                }
                r[k] = o[k];
            }
        });
    }
    
    var result = {};
    iter(object, pattern, result);
    return result;
}

var obj = { a0: { b0: { c0: 0, c1: 1 }, b1: { c2: 2 } } },
    subObj = retrieveDeep(obj, { a0: { b0: { c0: null }, b1: { c2: null } } });

console.log(subObj);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Javascript对对象进行深度过滤

如何使用 lodash javascript 对对象中的数组数据进行分组

根据特定键递归对对象数组进行排序:Javascript

如何使用父子树对JavaScript对象进行排序

如何使用JavaScript深度映射对象键(lodash)?

如何使用jQuery或JavaScript对对象数组进行排序

如何根据键对对象的javascript数组进行排序

如何在javascript中对对象元素进行分组

如何在javascript中对对象数组进行排序?

如何基于键对对象的JavaScript数组进行分组

用lodash(或香草javascript)对对象数组进行排序和过滤

递归深度展平JavaScript对象

在javascript中对对象数组进行分组

在javascript中对对象数组进行排序

使用 JavaScript 对对象数组进行排序

对象数组中的Javascript / Lodash深度比较对象

如何通过基于特定字段值对对象进行分组来过滤 javascript 对象数组?

在javascript中,如何按对象的属性对对象集合进行排序?

javascript对对象的reduce()

Javascript:按给定键值的子对象对对象进行排序

按javascript对象中键的值对对象进行分组

在javascript中对对象的对象数组进行排序

在JavaScript中按对象对对象进行排序

按日期对对象数组进行分组,并每天在Javascript中获取最新信息

如何从JavaScript中的键值对对象创建单个对象?

JavaScript(Lodash)-两个对象的深度比较

如何通过使用 Object.create() 在 JavaScript 中使用递归来深度复制对象?

如何对对象数组进行排序,然后在 JavaScript 中映射它?

如何使用javascript根据创建日期按升序对对象数组进行排序并做出反应?