如何使用 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
回调输入中交换 p
和 data
,如下所示。
因为第一个参数是 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);
我有这样的数据
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
回调输入中交换 p
和 data
,如下所示。
因为第一个参数是 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);