初学者JavaScript数组问题

初学者JavaScript数组问题,javascript,html,arrays,for-loop,Javascript,Html,Arrays,For Loop,目前,我必须在一个简单的网站上工作,从用户那里获取三个值,将它们相加,并提供一个平均值。讲师帮我整理了一下,但今晚做完后,我无法得出正确的平均值 这是我的HTML: 平均数 平均数 单击按钮输入一系列要求平均值的数字 输入您的第一个号码 计算平均数 这是我的JS: /* JavaScript与“average.html”一起使用 */ “严格使用”; //所有函数均可访问的全局变量 var数=[]//创建一个空数组 var enterButton=null//全局变量必须初始化 var

目前,我必须在一个简单的网站上工作,从用户那里获取三个值,将它们相加,并提供一个平均值。讲师帮我整理了一下,但今晚做完后,我无法得出正确的平均值

这是我的HTML:


平均数
平均数
单击按钮输入一系列要求平均值的数字

输入您的第一个号码

计算平均数

这是我的JS:

/*
JavaScript与“average.html”一起使用
*/
“严格使用”;
//所有函数均可访问的全局变量
var数=[]//创建一个空数组
var enterButton=null//全局变量必须初始化
var calculateButton=null;
/*从提示符中获取一个数字
*若有效数字添加到数组中,若无效,则向用户发送错误消息
*在网页上显示更新后的数字数组
*使“计算”按钮可见
*/
函数enterNumber(){
变量编号=提示(“输入您的编号”);
var number=number(number);//不知道它做什么,由prof添加
如果(isFinite(number)){//测试输入的是一个数字
numbers.push(number);//将输入的数字添加到数组的末尾
}
否则{
警报(“请输入有效数字”);
}
document.getElementById(“numberList”).innerHTML=“到目前为止,您输入的数字是:”+numbers;//显示输入的数字列表
enterButton.textContent=“输入您的下一个号码”;//更改“输入”按钮上的标签
calculateButton.style.visibility=“visible”//显示按钮-使用元素的CSS属性
}       
/*计算数字数组的总和和平均值
*在网页上显示结果
*/
函数calculateAverage(){
var平均值=0;
var合计=0;
对于(var i=1;i
我已经使用了stock Firefox调试器来查找错误,现在已经很晚了,但我很确定我在for循环的initialise语句中与JS的第35行发生了冲突。循环运行三次后,“数字[i]”变得未定义,导致平均值为NaN


很抱歉,我觉得这是一个新手问题,如果有人能帮我让这个学生上床睡觉,我将不胜感激。

数组的索引从0开始,所以你应该用
var I=0
数组索引从0开始初始化for循环。 还使用
total+=number[i]添加所有数字

for (var i = 0 ; i < numbers.length; i++){    
        total += numbers[i];   //add each number in the array to the cumulative total 
    }

平均数
平均数
单击按钮输入一系列要求平均值的数字

输入您的第一个号码

计算平均数


您的
total=number[i]
完全重新分配total。如果要计算平均值,请将其添加到
total

另一个问题是数组是零索引的,而不是一个索引的;从
i=0
开始,而不是从
i=1
开始。或者,更好的方法是使用数组方法,它具有更好的抽象性,并且不需要手动迭代
forEach
是一个选项,但是
reduce
更适合将数组转换为单个值:

const total = number.reduce((a, b) => a + b);
/*
JavaScript与“average.html”一起使用
*/
“严格使用”;
//所有函数均可访问的全局变量
var数=[]//创建一个空数组
var enterButton=null//全局变量必须初始化
var calculateButton=null;
/*从提示符中获取一个数字
*若有效数字添加到数组中,若无效,则向用户发送错误消息
*在网页上显示更新后的数字数组
*使“计算”按钮可见
*/
函数enterNumber(){
变量编号=提示(“输入您的编号”);
var number=number(number);//不知道它做什么,由prof添加
如果(isFinite(number)){//测试输入的是一个数字
numbers.push(number);//将输入的数字添加到数组的末尾
}否则{
警报(“请输入有效数字”);
}
document.getElementById(“numberList”).innerHTML=“到目前为止,您输入的数字是:”+numbers;//显示输入的数字列表
enterButton.textContent=“输入您的下一个号码”;//更改“输入”按钮上的标签
calculateButton.style.visibility=“visible”//显示按钮-使用元素的CSS属性
}
/*计算数字数组的总和和平均值
*在网页上显示结果
*/
函数calculateAverage(){
const total=数字。reduce((a,b)=>a+b);
const average=总数量/长度;
document.getElementById(“结果”).innerHTML=“您的数字总数为“+total+”,平均数为“+average;
}
函数init(){
enterButton=document.getElementById(“输入”);
calculateButton=document.getElementById(“计算”);
calculateButton.style.visibility=“hidden”//隐藏计算按钮,直到输入一些数字
enterButton.onclick=enterNumber;
calculateButton.onclick=calculateAverage;
}
init()
平均数
单击按钮输入一系列要求平均值的数字

输入您的第一个号码

计算平均数

以下代码中更正的点

  • 数组始终以索引0开头
  • 您需要将total添加到循环中的自身,如
    total=total
    
    for (var i = 0 ; i < numbers.length; i++){    
            total += numbers[i];   //add each number in the array to the cumulative total 
        }
    
    const total = number.reduce((a, b) => a + b);