gpt4 book ai didi

javascript - 如何在javascript中获取变化数组的平均值

转载 作者:行者123 更新时间:2023-11-30 09:21:44 25 4
gpt4 key购买 nike

这是我在这里的第一篇文章。我是 Javascript 的新手,这是我的问题:

我在 html 中有四个输入字段。用户无需填写所有四个输入字段;一个就够了。现在我的问题是如何获得输入的平均值,无论用户只给我一个填充字段还是 2 个或 3 个甚至四个填充字段。

这是我的起始代码,但它有问题。

function calculateAll() {
//first create an array to gather inputs from user and create the sum

var listening_avg_array = new Array();
listening_avg_array[0] = parseInt(listeningInput1_js.value);
listening_avg_array[1] = parseInt(listeningInput2_js.value);
listening_avg_array[2] = parseInt(listeningInput3_js.value);
listening_avg_array[3] = parseInt(listeningInput4_js.value);

//now we calculate the average for listening scores
var sum = 0;
for (var i = 0; i < listening_avg_array.length; i++) {
sum += listening_avg_array[i];
}

var avg = sum / listening_avg_array.length;

listening_avg_span_js.innerHTML = avg;
}

不幸的是,如果用户只给我 3 个或更少的输入,我会得到一个“NaN”错误;但是如果用户给我所有四个输入,代码就可以工作,但这只是可能的条件之一。有时我可能只从用户那里得到 2 个字段,我必须通过将总和除以 2 来获得平均值。

我不知道怎么做。

这是 html:

<input id="listening-input1" type="number" min="60" max="100">
<input id="listening-input2" type="number" min="60" max="100">
<input id="listening-input3" type="number" min="60" max="100">
<input id="listening-input4" type="number" min="60" max="100">

最佳答案

您可以过滤包含 NaN 的输入以获得一组设置值:

const values = listening_avg_array.filter(value => !isNaN(value));

那么你可以把它加起来除以它的长度:

const average = values.reduce((a, b) => a + b, 0) / values.length;

或者如果您更喜欢旧的 for 循环:

var sum = 0, count = 0;
for (const value of listening_avg_array) {
if(!isNaN(value)) {
sum += value;
count++;
}
}

const average = sum / count;

关于javascript - 如何在javascript中获取变化数组的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51222788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com