假设我有一个像这样的深层物体
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
只需遍历模式的属性并对对象进行递归调用即可。分配原始值。
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] 删除。
我来说两句