首页 > 解决方案 > 如何获得包含字符串和数字的数组中的平均数

问题描述

我正在编写一个函数来通过数组包含数字和字符串的测试。

这是测试用例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数组中仍然有字符串。我怎样才能摆脱它并找到总和以获得平均数?

标签: javascriptunit-testingtdd

解决方案


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


推荐阅读