【发布时间】:2021-11-27 23:06:00
【问题描述】:
取以下代码:
export const BOMs: BOM[] = [
{ part_num: "X-Wing", sub_part_num: "Max Engine", qty: 4 },
{ part_num: "X-Wing", sub_part_num: "Airplane Body", qty: 1 },
{ part_num: "Tie Fighter", sub_part_num: "Max Engine", qty: 2 },
{ part_num: "Tie Fighter", sub_part_num: "Airplane Body", qty: 1 },
];
export const Sales: Sale[] = [
{ part_num: "X-Wing", qty: 100 },
{ part_num: "Tie Fighter", qty: 200 },
];
function generate_report(boms: BOM[], sales: Sale[]) {
let myObj = {};
BOMs.map(bom => {
sales.map(sale => {
if (sale.part_num === bom.part_num) {
myObj[bom.sub_part_num] = bom.qty * sale.qty
myObj[bom.part_num] = sale.qty;
}
})
})
return myObj;
}
// myObj {
'Max Engine': 400,
'X-Wing': 100,
'Airplane Body': 200,
'Tie Fighter': 200
}
我的测试期望 myObj 返回
expect(results["Max Engine"]).toBe(100 * 4 + 200 * 2); // 800
这个数字假设“X-Wing”的数量为 400,“Tie Fighter”的数量为 400。发生的事情是我的循环正在覆盖 X 翼中 Max Engine 的值,并且只返回 Tie Fighter 的值,即 200 x 2 = 400。
如何更改我的代码以便连接这些值?
【问题讨论】:
-
不应该是
boms.map而不是BOMs.map。 -
不,看第一个函数。
-
generate_report是第一个函数,它有一个未使用的参数boms。 -
是的,好点。我必须在函数内部循环导出函数。
标签: typescript loops object