我试图在node.js中做一个对象合并。合并非常有效,因为它不会覆盖导致未定义的属性对象。
但是,我希望它只覆盖目标对象中存在的对象。见下面的例子:
var e1 = {
name: 'Jack',
surname: 'Root'
};与…合并
var e2 = {
name: 'Rex',
surname: undefined,
age: 24
};目前的结果:
{
name: 'Rex',
surname: 'Root',
age: 24
}结果我想:
{
name: 'Rex',
surname: 'Root'
}因此,我试图得到的是,源对象只覆盖存在于这两种属性中的属性,并且只有在它们不是未定义的情况下才能得到。
我试图搜索其他函数,但只找到了merge和分配来做类似的事情。但遗憾的是,这并不是我想要的。
这背后的整个想法是构建一些方法,从web表单中获取对象字段,然后将它们绑定到mongoose.js模型对象以进行持久化。
这是为了避免总是必须手动将每个属性绑定到另一个对象。
发布于 2015-04-22 13:16:28
我想不出一种非常方便的方法来使用存档方法,但使用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];
}发布于 2015-04-22 13:25:56
你可以用_
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);https://stackoverflow.com/questions/29798444
复制相似问题