我有這樣的資料
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回傳一個空陣列,就像從未將資料分配給productMap物件一樣。我究竟做錯了什么?提前致謝!
uj5u.com熱心網友回復:
交換p和data在reduce回呼輸入中,如下所示。
因為第一個引數是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);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/379556.html
標籤:javascript 数组 目的 ecmascript-6 减少
上一篇:如何將2個物件轉換為單個物件
