内在像lodash合并

我想在node.js中做一个与lodash合并的对象。 合并很好,因为它不会覆盖导致未定义的属性对象。

不过,我希望它的手段只覆盖目标对象中存在的对象。 看下面的例子:

var e1 = { name: 'Jack', surname: 'Root' }; 

合并

 var e2 = { name: 'Rex', surname: undefined, age: 24 }; 

当前结果:

 { name: 'Rex', surname: 'Root', age: 24 } 

结果我想:

 { name: 'Rex', surname: 'Root' } 

所以我想得到的是源对象只覆盖两者中存在的属性,只有当它们不是未定义的。

我试图寻找其他function,但只发现合并分配做类似的事情。 但唉,这不是我想要的。

这个背后的全部想法是build立一些方法,将从Web窗体中获取对象字段,然后绑定到一个mongoose.js模型对象进行持久化。

这是为了避免总是手动将每个属性绑定到另一个对象。

我无法弄清楚用lodash方法做到这一点的一个非常方便的方法,但是使用vanilla并不难:

 // Only loop over e1 values for (var e1k in e1) { // Use e2 value if it exists, otherwise stick with what is already there e1[e1k] = e2[e1k] || e1[e1k]; } 

你可以使用_.mapValues

 var e1 = { name: 'Jack', surname: 'Root' }; var e2 = { name: 'Rex', surname: undefined, age: 24 }; var result = _.mapValues(e1, function (n, e) { return e2[e] || n; }); console.log(result);