javascript - 如何获得包含字符串和数字的数组中的平均数
问题描述
我正在编写一个函数来通过数组包含数字和字符串的测试。
这是测试用例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;
我实现了我得到了只有数字的新数组,但"57"
我的filtered
数组中仍然有字符串。我怎样才能摆脱它并找到总和以获得平均数?
解决方案
function averageNumbers(arr) {
var filter = arr.filter(item => typeof item === 'number');
var sum = filter.reduce((acc, n) => acc + n, 0);
return sum / filter.length;
}
console.log(averageNumbers([4, "-", 8, 11, "hello", "57", 0, 2]));
// module.exports = averageNumbers;
这让你期待5