平均问题
Problems averaging
我在 javascript 中有以下函数来计算平均值:
function calculaMediaFinal () {
var soma = 0;
for(var i = 1; i>5; i++) {
soma += parseInt(document.getElementById('resultado' + i).value, 10);
}
var media = soma / 5;
var inputCuboMedia = document.getElementById('ConcretizaObj');
inputCuboMedia.value = parseInt(media, 10);
}
function ContarObjetivos() {
let contador = 0;
if(document.getElementById('resultado' + i).value) {
contador++;
}
}
但是我有一个问题,就是我输入的最多有 5 个是不正确的,因为用户是他选择他想要多少结果的人。也就是说,如果用户只想要4个,那5个就不能填了。如果没有数字5,但有用户想要的结果数,如何求平均?
如果我理解你的问题是正确的,你想要这样的东西。创建一个新的数字输入字段,用于存储用户想要的金额。将输入字段的值放在一个变量中并在您的代码中使用它?此外,它可能需要在要执行的 for 循环中为 '<='。例如
HTML 在您的代码中添加下一行:
<input type="number" id="userAmount" />
Javascript:
function calculaMediaFinal () {
var soma = 0;
var amount = parseInt(document.getElementById("userAmount").value);
for(var i = 1; i<=amount; i++) {
soma += parseInt(document.getElementById('resultado' + i).value, 10);
}
var media = soma / amount;
var inputCuboMedia = document.getElementById('ConcretizaObj');
inputCuboMedia.value = parseInt(media, 10);
}
function ContarObjetivos(){
let contador = 0;
if(document.getElementById('resultado' + i).value) {
contador++;
}
}
你可以这样做。
- 创建
input
元素并让用户将每个数字传递给它,以 space 分隔
- 创建
button
将触发计算平均值的代码
- 创建将存储结果的元素
执行实际计算
- 获取输入字段的值,将其拆分为 space
' '
,使用 trim
移除每个单独数字周围的白色 space
- 使用
reduce
对上一步创建的数组求和
- 将总和除以提供的数字数量
const input = document.querySelector('input');
const btn = document.querySelector('button');
const res = document.querySelector('p > span');
function getAverage() {
const values = input.value.split(' ').map(v => v.trim());
const sum = values.reduce((acc, v) => acc + Number(v), 0);
res.textContent = (sum / values.length);
}
// 1 2 3 4 5 6 7 8 9 10
btn.addEventListener('click', getAverage);
<input type='text' />
<button>get average</button>
<p>result: <span></span></p>
你把数字一个一个输入输入框,用space隔开(试试输入1 2 3 4 5 6 7 8 9 10
),然后点击按钮进行计算,然后显示在span
元素.
你的循环没有执行:
- 在
for
中,第二个参数是执行迭代的条件(true = execute)。将 >
更改为 <=
使其工作。
- 我还合并了你的两个函数,所以一个未填充的
input
不算。
这是一个工作片段,其中我使用了您的所有代码:
// Merged both function:
function calculaMediaFinal() {
let soma = 0;
let contador = 0;
for (var i = 1; i <= 5; i++) { // Changed > to <= here
if (document.getElementById('resultado' + i).value) {
soma += parseInt(document.getElementById('resultado' + i).value, 10);
contador++;
}
}
var media = soma / contador;
var inputCuboMedia = document.getElementById('ConcretizaObj');
inputCuboMedia.value = parseInt(media, 10);
}
<input id="resultado1"><br>
<input id="resultado2"><br>
<input id="resultado3"><br>
<input id="resultado4"><br>
<input id="resultado5"><br>
<button onclick="calculaMediaFinal();">calcula</button>
<br> Media:
<input id="ConcretizaObj">
⋅
⋅
⋅
如果你不需要在parseInt函数中指定"base",我也建议你使用一元+
运算符:
// Merged both function:
function calculaMediaFinal() {
let soma = 0;
let contador = 0;
for (var i = 1; i <= 5; i++) { // Changed > to <= here
if (document.getElementById('resultado' + i).value) {
soma += +document.getElementById('resultado' + i).value;
contador++;
}
}
var media = soma / contador;
document.getElementById('ConcretizaObj').value = media;
}
<input id="resultado1"><br>
<input id="resultado2"><br>
<input id="resultado3"><br>
<input id="resultado4"><br>
<input id="resultado5"><br>
<button onclick="calculaMediaFinal();">calcula</button>
<br> Media:
<input id="ConcretizaObj">
希望对您有所帮助。
我在 javascript 中有以下函数来计算平均值:
function calculaMediaFinal () {
var soma = 0;
for(var i = 1; i>5; i++) {
soma += parseInt(document.getElementById('resultado' + i).value, 10);
}
var media = soma / 5;
var inputCuboMedia = document.getElementById('ConcretizaObj');
inputCuboMedia.value = parseInt(media, 10);
}
function ContarObjetivos() {
let contador = 0;
if(document.getElementById('resultado' + i).value) {
contador++;
}
}
但是我有一个问题,就是我输入的最多有 5 个是不正确的,因为用户是他选择他想要多少结果的人。也就是说,如果用户只想要4个,那5个就不能填了。如果没有数字5,但有用户想要的结果数,如何求平均?
如果我理解你的问题是正确的,你想要这样的东西。创建一个新的数字输入字段,用于存储用户想要的金额。将输入字段的值放在一个变量中并在您的代码中使用它?此外,它可能需要在要执行的 for 循环中为 '<='。例如
HTML 在您的代码中添加下一行:
<input type="number" id="userAmount" />
Javascript:
function calculaMediaFinal () {
var soma = 0;
var amount = parseInt(document.getElementById("userAmount").value);
for(var i = 1; i<=amount; i++) {
soma += parseInt(document.getElementById('resultado' + i).value, 10);
}
var media = soma / amount;
var inputCuboMedia = document.getElementById('ConcretizaObj');
inputCuboMedia.value = parseInt(media, 10);
}
function ContarObjetivos(){
let contador = 0;
if(document.getElementById('resultado' + i).value) {
contador++;
}
}
你可以这样做。
- 创建
input
元素并让用户将每个数字传递给它,以 space 分隔
- 创建
button
将触发计算平均值的代码 - 创建将存储结果的元素
执行实际计算
- 获取输入字段的值,将其拆分为 space
' '
,使用trim
移除每个单独数字周围的白色 space
- 使用
reduce
对上一步创建的数组求和
- 将总和除以提供的数字数量
const input = document.querySelector('input');
const btn = document.querySelector('button');
const res = document.querySelector('p > span');
function getAverage() {
const values = input.value.split(' ').map(v => v.trim());
const sum = values.reduce((acc, v) => acc + Number(v), 0);
res.textContent = (sum / values.length);
}
// 1 2 3 4 5 6 7 8 9 10
btn.addEventListener('click', getAverage);
<input type='text' />
<button>get average</button>
<p>result: <span></span></p>
你把数字一个一个输入输入框,用space隔开(试试输入1 2 3 4 5 6 7 8 9 10
),然后点击按钮进行计算,然后显示在span
元素.
你的循环没有执行:
- 在
for
中,第二个参数是执行迭代的条件(true = execute)。将>
更改为<=
使其工作。 - 我还合并了你的两个函数,所以一个未填充的
input
不算。
这是一个工作片段,其中我使用了您的所有代码:
// Merged both function:
function calculaMediaFinal() {
let soma = 0;
let contador = 0;
for (var i = 1; i <= 5; i++) { // Changed > to <= here
if (document.getElementById('resultado' + i).value) {
soma += parseInt(document.getElementById('resultado' + i).value, 10);
contador++;
}
}
var media = soma / contador;
var inputCuboMedia = document.getElementById('ConcretizaObj');
inputCuboMedia.value = parseInt(media, 10);
}
<input id="resultado1"><br>
<input id="resultado2"><br>
<input id="resultado3"><br>
<input id="resultado4"><br>
<input id="resultado5"><br>
<button onclick="calculaMediaFinal();">calcula</button>
<br> Media:
<input id="ConcretizaObj">
⋅ ⋅ ⋅
如果你不需要在parseInt函数中指定"base",我也建议你使用一元+
运算符:
// Merged both function:
function calculaMediaFinal() {
let soma = 0;
let contador = 0;
for (var i = 1; i <= 5; i++) { // Changed > to <= here
if (document.getElementById('resultado' + i).value) {
soma += +document.getElementById('resultado' + i).value;
contador++;
}
}
var media = soma / contador;
document.getElementById('ConcretizaObj').value = media;
}
<input id="resultado1"><br>
<input id="resultado2"><br>
<input id="resultado3"><br>
<input id="resultado4"><br>
<input id="resultado5"><br>
<button onclick="calculaMediaFinal();">calcula</button>
<br> Media:
<input id="ConcretizaObj">
希望对您有所帮助。