如何使用 reduce 将具有属性的对象分配给对象的 属性

How to assign object with properties to property of an object using reduce

我有这样的数据

const dataSet = [
   {
     'Transactions.productRef': 'SomeRef/123',
     'Transactions.itemCount': 25,
     'Transactions.revenue': 1000,
   },
   {
     'Transactions.productRef': 'SomeRef/124',
     'Transactions.itemCount': 35,
     'Transactions.revenue': 500,
   },
 ];

并且我正在尝试将具有属性的对象分配给 'Transactions.productRef' 的值以获得类似这样的东西

{
  'SomeRef/123': {
     productRef: 'SomeRef/123',
     soldTickets: 25,
     revenue: 1000,
   },
  'SomeRef/124': {
     productRef: 'SomeRef/124',
     soldTickets: 35,
     revenue: 500,
   }
 }

然后创建一个包含对象的新数组。 我试过这样的东西

const dataSet = [
  {
    'Transactions.productRef': 'SomeRef/123',
    'Transactions.itemCount': 25,
    'Transactions.revenue': 1000,
  }, {
    'Transactions.productRef': 'SomeRef/124',
    'Transactions.itemCount': 35,
    'Transactions.revenue': 500,
  },
];

const productMap = {};

dataSet.reduce((data, p) => {
    p[data['Transactions.productRef']] = p[data['Transactions.productRef']] 
       || {};
    p[data['Transactions.productRef']].soldTickets = 
       data['Transactions.itemCount'];
    p[data['Transactions.productRef']].revenue = 
       data['Transactions.revenue'];
    p[data['Transactions.productRef']].productRef = 
       data['Transactions.productRef'];
    return p;
 }, productMap);

 const newData = Object.values(productMap);
 console.log(newData);

但是 console.log returns 像数据这样的空数组从未分配给 productMap 对象。我究竟做错了什么?提前致谢!

reduce 回调输入中交换 pdata,如下所示。

因为第一个参数是 previousValue,第二个参数是 currentValue

dataSet.reduce((p, data) => {
    p[data['Transactions.productRef']] = p[data['Transactions.productRef']] 
       || {};
    p[data['Transactions.productRef']].soldTickets = 
       data['Transactions.itemCount'];
    p[data['Transactions.productRef']].revenue = 
       data['Transactions.revenue'];
    p[data['Transactions.productRef']].productRef = 
       data['Transactions.productRef'];
    return p;
 }, productMap);