javascript - 内部像 lodash 中的合并

标签 javascript node.js merge 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'
}

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

我尝试搜索其他函数,但只找到了mergeassign 来做类似的事情。但遗憾的是,这并不是我想要的。

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

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

最佳答案

我想不出一个非常方便的方法来使用 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];
}

关于javascript - 内部像 lodash 中的合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29798444/

相关文章:

javascript - 如何在 node.js 沙箱中安全地运行用户提交的脚本?

json - 如何从 NodeJS JSON 中的特定键获取值

python - 使用 Python 对 jpeg 图像进行排序和合并?

php - 如何将Ms Access数据库转换为Web表单?

javascript - 在状态更新期间避免组件内部的刷新功能

javascript - 如果数组是稀疏的,为什么 array.indexOf(undefined) 不起作用

javascript - 如何正确地将 youtube iframe 嵌入到 Angular2 View 中?获取不安全值错误

javascript - 无法返回数组的元素

node.js - 在 wsl 2 中安装不同的 Node 版本

python - Pandas 根据另一个数据框中的匹配列填充新的数据框列