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

javascript:使用EcmaScript 6/immutable js左合并两个对象,javascript,object,merge,ecmascript-6,immutable.js,Javascript,Object,Merge,Ecmascript 6,Immutable.js,我在javascript项目中工作 我现在讨论合并两个对象的“搜索后”选项,因为第二个对象只会ovveride第一个对象的字段,而不会添加第二个对象没有的新字段 比如: const firstObj = {name:'jon', age:'6} const secondObj = {name:'nir', mark:'100%'} const mergedObj = leftMerge(firstObj, secondObj); 所以我喜欢mergedObj: {name:'nir', ag

我在javascript项目中工作

我现在讨论合并两个对象的“搜索后”选项,因为第二个对象只会ovveride第一个对象的字段,而不会添加第二个对象没有的新字段

比如:

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库来实现这一点?

迭代
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]=(b中的key?b:a[key],r),{});
const mergedObj=leftMerge(firstObj,secondObj);

console.log(mergedObj)没有内置的(合并所有属性),但您可以自己轻松编写:

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

我建议删除
对象。分配
并使该()
if
成为
if
-
else
statement@Bergi-谢谢你的逻辑。