从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===