这是密码-
接口-
interface IWEXInterface {
readonly Date?: string;
"Exec Qty"?: string;
readonly Expiry?: string;
}
资料-
let data: IWEXInterface[] = [
{
Date: "8/30/2021",
"Exec Qty": "13",
Expiry: "17/09/2021",
},
{
Date: "8/30/2021",
"Exec Qty": "15",
Expiry: "17/09/2021",
},
{
Date: "8/30/2021",
"Exec Qty": "13",
Expiry: "17/09/2021",
},
];
对对象求和并分组-
const sums = [
...data
.reduce((map, item) => {
const { Date: key, "Exec Qty": qty } = item;
const prev: IWEXInterface = map.get(key);
if (prev) {
prev["Exec Qty"]! += Number(qty);
} else {
map.set(key, Object.assign({}, item));
}
return map;
}, new Map())
.values(),
];
console.log(sums);
输出-
[ { Date: '8/30/2021', 'Exec Qty': '131513', Expiry: '17/09/2021' } ]
我怎样才能将字符串转换为数字。
想要的产出-
[ { Date: '8/30/2021', 'Exec Qty': 41, Expiry: '17/09/2021' } ]
.............................................................................................................
if (prev) {
prev["Exec Qty"]! = (Number(prev["Exec Qty"])+ Number(qty)).toString()
} else {
map.set(key, Object.assign({}, item));
}
只需将prev["Exec Qty"]
转换为数字:
prev["Exec Qty"] = String(Number(prev["Exec Qty"]!) + Number(qty));
也许不用=
速记?
prev["Exec Qty"] = Number(prev["Exec Qty"]) + Number(qty);