我對AssertionError [ERR_ASSERTION]: undefined == 390 in gitlab有點困惑 。
我想要以下內容:
sumSalaries(obj)函式,接受物件obj作為引數,其中欄位名對應一個員工的姓名,而對應的值為每個員工的薪水。
拿下面的一段代碼:
export default function sumSalaries(obj) {
let salaries = {
John: 100,
Jane: 160,
Mike: 130
};
let sum = 0;
for (let key in salaries) {
if (salaries.hasOwnProperty(key)) {
sum = salaries[key];
}
}
obj = sum;
console.log(obj);
}
sumSalaries();
測驗必須執行以下操作:
import sumSalaries from "../test.js";
import assert from "assert";
describe("\n\ntest.js", () => {
it("should return the correct sum", () => {
[
[
{
John: 100,
Ann: 160,
Pete: 130,
},
390,
],
[
{
John: 80,
Jane: 160,
Mike: 190,
},
430,
],
[
{
Charlie: 84,
Victor: 160,
Pete: 200,
},
444,
],
].map((obj) => {
let salaries = obj[0];
let sum = obj[1];
assert.equal(sumSalaries(salaries), sum);
});
});
});
gitlab 給我的錯誤:
AssertionError [ERR_ASSERTION]: undefined == 390
uj5u.com熱心網友回復:
讓我們來看看你寫的:
export default function sumSalaries(obj) {
let salaries = {
John: 100,
Jane: 160,
Mike: 130
};
您的函式應該計算傳入的工資總和,但您只是將自己的固定工資串列放在這里。因此,您的函式將只計算這三個工資的總和。
然后你繼續把這些工資加起來,這似乎沒問題:
let sum = 0;
for (let key in salaries) {
if (salaries.hasOwnProperty(key)) {
sum = salaries[key];
}
}
該引數obj包含傳入的薪水,但在此行之后,它現在包含您從固定串列中計算出的薪水總和:
obj = sum;
然后你把這個總和寫到控制臺。也許對除錯很有用,但是一旦完成除錯,請洗掉此行。
console.log(obj);
該函式在沒有遇到return陳述句的情況下結束,因此您的函式回傳undefined. 這解釋了為什么您會得到關于 的斷言undefined == 390:這undefined是您的函式回傳的內容以及390您的測驗期望回傳的內容。
}
那么你怎么能解決這個問題呢?
首先,將函式引數的名稱更改obj為salaries并去掉硬編碼的薪水。這允許您的函式計算給定的工資總和。
其次,一旦你計算了總和,return它。
你應該得到以下結果,經過測驗,它似乎有效:
export default function sumSalaries(salaries) {
let sum = 0;
for (let key in salaries) {
if (salaries.hasOwnProperty(key)) {
sum = salaries[key];
}
}
return sum;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/379548.html
標籤:javascript 目的 GitLab javascript对象
上一篇:按多個屬性值過濾陣列
