返回带有十进制数字的数组的和JavaScript

时间:2018-12-06 22:17:35

标签: javascript

我有一个函数,该函数采用分数数组并需要计算平均分数。这适用于常规数字,但是当分数数字带有小数时不起作用。如何更改此功能以解决此问题?我们当然不想削减小数。

const score = [ "3.0", "3.2", "4.4" ]

const result = (survey
        .map( function(i){ // assure the value can be converted into an integer
        return /^\d+$/.test(i) ? parseInt(i) : 0; 
      })
      .reduce( function(a,b){ // sum all resulting numbers
        return (a+b) 
      })/score.length).toFixed(1)

2 个答案:

答案 0 :(得分:0)

我几乎没有更改您的代码。调整了正则表达式并使用了parseFloat。

const score = ["3.0", "3.2", "4.4"]

const result = (score
  .map(function(i) { // assure the value can be converted into an integer
    return /^\d+(\.\d+)?$/.test(i) ? parseFloat(i) : 0;
  })
  .reduce(function(a, b) { // sum all resulting numbers
    return (a + b)
  }) /
  score.length).toFixed(1);

console.log(result);

答案 1 :(得分:0)

您可以简单地使用递归:

function sum(a) {
  return (a.length && parseFloat(a[0]) + sum(a.slice(1))) || 0;
}

sum([ "3.0", "3.2", "4.4" ]).toFixed(1); // 10.6