从JavaScript对象数组创建单个对象
我有以下数据结构从JavaScript对象数组创建单个对象,javascript,Javascript,我有以下数据结构 [ { NAME: 'TEST_1', ORG: 'A', FROM: '20191223', TO: '99991231' }, { NAME: 'TEST_1', ORG: 'B', FROM: '20191223', TO: '99991231' }, { NAME: 'TEST_1', ORG: 'C',
[
{
NAME: 'TEST_1',
ORG: 'A',
FROM: '20191223',
TO: '99991231'
},
{
NAME: 'TEST_1',
ORG: 'B',
FROM: '20191223',
TO: '99991231'
},
{
NAME: 'TEST_1',
ORG: 'C',
FROM: '20191223',
TO: '99991231'
}
]
我想把这个数组组合成这样一个对象。我基本上是将组织分组为一个数组
{
NAME: 'TEST_1',
ORG: ['A', 'B', 'C']
FROM: '20191223',
TO: '99991231'
}
您可以使用reduce高阶函数处理此问题,如下所示:
let arr = [
{
NAME: 'TEST_1',
ORG: 'A',
FROM: '20191223',
TO: '99991231'
},
{
NAME: 'TEST_1',
ORG: 'B',
FROM: '20191223',
TO: '99991231'
},
{
NAME: 'TEST_1',
ORG: 'C',
FROM: '20191223',
TO: '99991231'
}
];
let obj = arr.reduce((prev , curr) => {
return {
...curr,
ORG : [...(prev['ORG'] || []) , curr['ORG']
}
} , {});
console.log(obj)
输出结果如下所示:
{ NAME: 'TEST_1',
ORG: [ 'A', 'B', 'C' ],
FROM: '20191223',
TO: '99991231' }
请展示你已经尝试过的,你可以通过使用过滤器和地图获得组织的数组。例如:const orgs=array.filterarr=>arr.NAME==='TEST_1'.maparr=>arr.ORG;显然,如果需要动态名称,就必须使用变量,如果需要比较FROM和to,就必须使用&&FROM===&&to===