簡體   English   中英

如何使用 reduce 將具有屬性的 object 分配給 object 的屬性

[英]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,
   },
 ];

並且我正在嘗試將具有屬性的 object 分配給“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返回一個空數組,就像數據從未分配給productMap object一樣。 我究竟做錯了什么? 提前致謝!

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM