取以下代碼:
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-wing 中 Max Engine 的值,并且只回傳 Tie Fighter 的值,即 200 x 2 = 400。
如何更改我的代碼以便連接這些值?
uj5u.com熱心網友回復:
你要
myObj[bom.sub_part_num] = bom.qty * sale.qty
而是成為
if (!myObj[bom.sub_part_num]) {
myObj[bom.sub_part_num] = 0;
}
myObj[bom.sub_part_num] = bom.qty * sale.qty;
或更簡潔地說:
myObj[bom.sub_part_num] = (myObj[bom.sub_part_num] || 0) bom.qty * sale.qty
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/315809.html
