Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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 将数组映射到对象数组中,其中对于数组的一个元素,我们可能有多个对象_Javascript_Arrays_Ecmascript 6 - Fatal编程技术网

Javascript 将数组映射到对象数组中,其中对于数组的一个元素,我们可能有多个对象

Javascript 将数组映射到对象数组中,其中对于数组的一个元素,我们可能有多个对象,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,将对象数组和数组(如[{a:1,b:2},{c:3,d:4}],{e:5}]以最佳方式转换为javascript中的单个对象数组(如[{a:1},{b:2},{c:3},{d:4},{e:5})。 我使用了扩展运算符来展平数组,但是{…[{a:1,b:2}]}给出了{0:{a:1},1:{b:2}},这是在添加额外的键。然后,我通过迭代所有元素来删除密钥。请帮我找到最佳解决方案。像这样的问题 console.log([{a:1,b:2},{c:3,d:4}],{e:5})。 reduce((a

将对象数组和数组(如
[{a:1,b:2},{c:3,d:4}],{e:5}]
以最佳方式转换为javascript中的单个对象数组(如
[{a:1},{b:2},{c:3},{d:4},{e:5})。
我使用了扩展运算符来展平数组,但是
{…[{a:1,b:2}]}
给出了
{0:{a:1},1:{b:2}}
,这是在添加额外的键。然后,我通过迭代所有元素来删除密钥。请帮我找到最佳解决方案。

像这样的问题

console.log([{a:1,b:2},{c:3,d:4}],{e:5})。
reduce((arr,element)=>Array.isArray(element)?[…arr,…element]:[…arr,element],]。
reduce((arr,element)=>[…arr,…Object.entries(element).map([key,value])=>({[key]:value}]),[])最短

var data=[{a:1,b:2},{c:3,d:4}],{e:5}];
var结果=[].concat(…数据).reduce((ac,a)=>
ac.concat(Object.keys(a.map)(k=>({[k]:a[k]})),[]);
控制台日志(结果)
您可以使用
数组#reduce
将数组展平。然后,使用
array#reduce
使用
array#map
获取单个键值对

var data=[{a:1,b:2},{c:3,d:4}],{e:5}];
var getObject=(数据)=>{
返回数据
.减少((r,b)=>r.concat(b),[])
.reduce((r,o)=>r.concat(Object.keys(o.map)(k=>({[k]:o[k]})),[]);
}
log(getObject(data))使用and展平阵列,通过将其展开,将其合并为单个对象,然后将其转换为所需的形式:

const data=[[{a:1,b:2},{c:3,d:4}],{e:5}];
const result=Object.entries(
Object.assign({},[].concat(…数据))
).map(([k,v])=>({[k]:v}));

控制台日志(结果)对于这种情况,您可以检查数组并采用递归方法。如果没有,则映射具有单个特性的对象的条目

var data=[{a:1,b:2},{c:3,d:4}],{e:5}],
结果=数据.reduce(函数fn(r,a){
返回r.concat(Array.isArray(a)
?a.减少(fn,[])
:Object.entries(a.map)([k,v])=>({[k]:v}))
);
}, []);
控制台日志(结果)

.as控制台包装{max height:100%!important;top:0;}
它会被双重或更多嵌套吗?您能展示您迄今为止的努力吗?