Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Js ES6,合并2个对象并存储在数组中,而不是替换现有的键_Javascript_Object_Ecmascript 6_Merge - Fatal编程技术网

Javascript Js ES6,合并2个对象并存储在数组中,而不是替换现有的键

Javascript Js ES6,合并2个对象并存储在数组中,而不是替换现有的键,javascript,object,ecmascript-6,merge,Javascript,Object,Ecmascript 6,Merge,我有以下几点 let user = { name: 'John', lastName: 'Doe', phone: '000111222' }; 两者合并后 我得到 基于此,手机是重复输入的,我想保留旧手机并将两者保留在数组中,基于ES6 spread,注意:我可以做迭代对象,但最好编写更少的代码 一些想法?,提前谢谢。将对象合并在一起,并使用Object.keys获取所有唯一的键。减少关键点,并检查对象中是否存在关键点。如果两者都存在,则将这些值合并为一个数组。如果不从其中一个对象获取值:

我有以下几点

let user = { name: 'John', lastName: 'Doe', phone: '000111222' };
两者合并后

我得到

基于此,手机是重复输入的,我想保留旧手机并将两者保留在数组中,基于ES6 spread,注意:我可以做迭代对象,但最好编写更少的代码


一些想法?,提前谢谢。

将对象合并在一起,并使用Object.keys获取所有唯一的键。减少关键点,并检查对象中是否存在关键点。如果两者都存在,则将这些值合并为一个数组。如果不从其中一个对象获取值:

const fn=o1,o2=>Object.keys{…o1,…o2}//获取组合键 .reduceAC,键=>{ //如果键存在,则这两个对象将在一个数组中组合值 如果输入o1和输入o2 acc[键]=[o1[键],输入o2[键]; //取o1或o2的值 else acc[键]=o1中的键?o1[键]:o2[键]; 返回acc; }, {}; const user={name:'John',lastName:'Doe',phone:'00011222'}; const otherInfo={电话:'123456',年龄:'30'}; const result=fnuser,otherInfo; console.logresult 您可以这样做:

let result = { ...user, ...otherInfo, phone: user.phone && otherInfo.phone ? [user.phone, otherInfo.phone]: user.phone || otherInfo.phone };
这个 1行代码

让result=Object.assign{},info,otherInfo,{phone:[info.phone,otherInfo.phone]}


Object.Assign更快

对于一般解决方案,您可能需要合并两个以上的对象,您可以在每个对象上应用Object.entries并创建结果对的平面数组。然后使用这些对扩展结果对象。当一对引用已在结果对象中的键时,请使用[].concat将该值与新值以静默方式合并到数组中。如果存储的值已经是一个包含两个或多个以前找到的值的数组,则此方法也适用

以下是一个片段:

const user={name:'John',lastName:'Doe',phone:'00011222'}; const otherInfo={电话:'123456',年龄:'30'}; const moreInfo={电话号码:9876543,家乡:巴黎}; 设res={}; 对于[user,otherInfo,moreInfo].flatMapObject.entries的let[k,v]{ res[k]=res[]中的k。concatres[k],v:v; } console.logres;
let result = { ...user, ...otherInfo };
{ name: 'John', lastName: 'Doe', phone: '123456', age: '30' };
{ name: 'John', lastName: 'Doe', phone: ['000111222', '123456'], age: '30' };
let result = { ...user, ...otherInfo, phone: user.phone && otherInfo.phone ? [user.phone, otherInfo.phone]: user.phone || otherInfo.phone };