javascript:使用EcmaScript 6 / immutable js左合并两个对象

时间:2017-11-15 13:24:43

标签: javascript object merge ecmascript-6 immutable.js

我在javascript项目中工作。

我现在关于搜索合并两个对象的选项,因为第二个对象只会丢弃第一个对象的字段而不会添加第二个没有的新字段。

类似的东西:

const firstObj = {name:'jon', age:'6}
const secondObj = {name:'nir', mark:'100%'}

const mergedObj = leftMerge(firstObj, secondObj);

所以我喜欢mergedObj:

{name:'nir', age:'6'}

我有什么方法可以使用javascript(我使用EcmaScript 6)或使用immutable.js库吗?

2 个答案:

答案 0 :(得分:3)

没有内置功能(Object.assign合并所有属性),但您可以自己轻松编写它:

function leftMerge(a, b) {
    const res = {};
    for (const p in a)
        res[p] = (p in b ? b : a)[p];
    return res;
}

答案 1 :(得分:2)

迭代firstObj个密钥,如果它具有这些属性,则从secondObj获取值,如果不从firstObj获取值:

const firstObj = {name:'jon', age:'6'}
const secondObj = {name:'nir', mark:'100%'}

const leftMerge = (a, b) => Object.keys(a).reduce((r, key) => (r[key] = (key in b ? b : a)[key], r), {});

const mergedObj = leftMerge(firstObj, secondObj);

console.log(mergedObj);