javascript - 使用 reduce 进行分组,我如何求和(打字稿)
javascript - using reduce to group by, how do I sum (typescript)
使用 typescript,我 javascript 成功地使用 reduce 函数进行了分组,但我不知道如何求和另一个 属性。
现在所有内容都按 属性 分组:pacct。 (成功)
我正在尝试求和 属性:数量。
有人可以帮忙吗?
这是我从另一个 .ts 导出的界面
export interface TradeData {
id: number;
filedate: Date;
poffic: string;
pacct: string;
quantity: number;
sector: string;
psdsC1: string;
name: string;
bbsymbol: string;
last_price: number;
deltasettlement: number;
}
这是我使用 reduce
的代码
const result = trades.reduce((groupedAccounts, trade) => {
const account = trade.pacct;
if (groupedAccounts[account] == null) groupedAccounts[account] = [];
groupedAccounts[account].push(trade);
return groupedAccounts;
}, {} as Record<string, TradeData[]>);
我们将给 reduce
一个初始值 0
,然后对于每笔交易,我们将数量添加到总数中。
const sum = trades.reduce((total, trade) => total + trade.quantity, 0);
函数的返回值是total
的下一个值,所以你可以这样想:
const callback = (total, trade) => total + trade.quantity;
const initialValue = 0;
let total = initialValue;
for (const trade of trades) {
total = callback(total, trade);
}
为了对每个组求和,让我们遍历每个组,为此,我们将使用 Object.entries
:
const entries = Object.entries(groups);
然后我们通过使值成为组数量的总和来转换每个条目:
const summed = entries.map(([key, group]) => {
const sum = group.reduce((total, trade) => total + trade.quantity, 0);
return [key, sum];
});
最后我们用 Object.fromEntries
:
将条目转回一个对象
const transformed = Object.fromEntries(summed);
使用 typescript,我 javascript 成功地使用 reduce 函数进行了分组,但我不知道如何求和另一个 属性。
现在所有内容都按 属性 分组:pacct。 (成功)
我正在尝试求和 属性:数量。
有人可以帮忙吗?
这是我从另一个 .ts 导出的界面
export interface TradeData {
id: number;
filedate: Date;
poffic: string;
pacct: string;
quantity: number;
sector: string;
psdsC1: string;
name: string;
bbsymbol: string;
last_price: number;
deltasettlement: number;
}
这是我使用 reduce
的代码const result = trades.reduce((groupedAccounts, trade) => {
const account = trade.pacct;
if (groupedAccounts[account] == null) groupedAccounts[account] = [];
groupedAccounts[account].push(trade);
return groupedAccounts;
}, {} as Record<string, TradeData[]>);
我们将给 reduce
一个初始值 0
,然后对于每笔交易,我们将数量添加到总数中。
const sum = trades.reduce((total, trade) => total + trade.quantity, 0);
函数的返回值是total
的下一个值,所以你可以这样想:
const callback = (total, trade) => total + trade.quantity;
const initialValue = 0;
let total = initialValue;
for (const trade of trades) {
total = callback(total, trade);
}
为了对每个组求和,让我们遍历每个组,为此,我们将使用 Object.entries
:
const entries = Object.entries(groups);
然后我们通过使值成为组数量的总和来转换每个条目:
const summed = entries.map(([key, group]) => {
const sum = group.reduce((total, trade) => total + trade.quantity, 0);
return [key, sum];
});
最后我们用 Object.fromEntries
:
const transformed = Object.fromEntries(summed);