内部像在lodash合并

Whe*_*ard 5 javascript merge node.js lodash

我试图在node.js中与lodash进行对象合并.合并很有效,因为它不会覆盖导致未定义的属性对象.

但是,我希望它的方法只覆盖目标对象中存在的对象.见下面的例子:

var e1 = {
    name: 'Jack',
    surname: 'Root'
};
Run Code Online (Sandbox Code Playgroud)

合并

var e2 = {
    name: 'Rex',
    surname: undefined,
    age: 24
};
Run Code Online (Sandbox Code Playgroud)

目前的结果:

{
    name: 'Rex',
    surname: 'Root',
    age: 24
}
Run Code Online (Sandbox Code Playgroud)

结果我想:

{
name: 'Rex',
surname: 'Root'
}
Run Code Online (Sandbox Code Playgroud)

所以我想要获得的是源对象只覆盖两者中存在的属性,并且只有在它们未被定义时才会被覆盖.

我尝试搜索其他函数,但只发现mergeassign来做类似的事情.但唉,这不完全是我想要的.

这背后的整个想法是构建一些方法,从Web表单获取对象字段,然后将它们绑定到mongoose.js模型对象以进行持久化.

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

Exp*_*lls 3

我无法找到一种非常方便的方法来使用 lodash 方法来做到这一点,但使用普通方法并不难:

// 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];
}
Run Code Online (Sandbox Code Playgroud)