javascript:使用EcmaScript 6/immutable js左合并两个对象
我在javascript项目中工作 我现在讨论合并两个对象的“搜索后”选项,因为第二个对象只会ovveride第一个对象的字段,而不会添加第二个对象没有的新字段 比如: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
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-谢谢你的逻辑。