首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内似合并

问内似合并
EN

Stack Overflow用户
提问于 2015-04-22 13:02:58
回答 2查看 754关注 0票数 5

我试图在node.js中做一个对象合并。合并非常有效,因为它不会覆盖导致未定义的属性对象。

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

代码语言:javascript
复制
var e1 = {
    name: 'Jack',
    surname: 'Root'
};

与…合并

代码语言:javascript
复制
var e2 = {
    name: 'Rex',
    surname: undefined,
    age: 24
};

目前的结果:

代码语言:javascript
复制
{
    name: 'Rex',
    surname: 'Root',
    age: 24
}

结果我想:

代码语言:javascript
复制
{
name: 'Rex',
surname: 'Root'
}

因此,我试图得到的是,源对象只覆盖存在于这两种属性中的属性,并且只有在它们不是未定义的情况下才能得到。

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

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-22 13:16:28

我想不出一种非常方便的方法来使用存档方法,但使用vanilla并不太困难:

代码语言:javascript
复制
// 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];
}
票数 3
EN

Stack Overflow用户

发布于 2015-04-22 13:25:56

你可以用_

代码语言:javascript
复制
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);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29798444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档