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