【发布时间】:2021-09-25 20:59:42
【问题描述】:
我正在编写一个函数来通过数组包含数字和字符串的测试。
这里是测试用例average-numner.test.js:
var average = require("./get-average");
test("Average", function() {
var numbers = [4, "-", 8, 11, "hello", "57", 0, 2];
var expected = 5;
var output = average(numbers);
expect(output).toEqual(expected);
});
这是我写的函数average-number.js:
// the input is an array of numbers and strings
// return the average of all the numbers
// be sure to exclude the strings
function averageNumbers(str) {
let sum = 0;
let newArr = [];
var filtered = str.filter(function(item) {
return parseInt(item);
});
return filtered;
}
console.log(averageNumbers([4, "-", 8, 11, "hello", "57", 0, 2]));
// module.exports = averageNumbers;
我得到了只有数字的新数组,但我的filtered 数组中仍然有字符串"57"。我怎样才能摆脱它并找到总和以获得平均数?
【问题讨论】:
-
我做了一个sn-p。您需要返回过滤到控制台记录它
-
'...但它仍然有字符串 "57"' - 你为什么期望
.filter()更改str中元素的类型(即一个可怕的名字)? -
注意
filter()实际上并没有转换元素,它只是测试它是否可以。 -
@mplungjan "...只有数字,但仍然有字符串 "57"" - 返回
filtered对实际问题有何影响? -
@pilchard 即使这样,它也会拒绝像
0这样的值或接受像"1"这样的值。
标签: javascript unit-testing tdd