“未捕获的TypeError:无法读取未定义的”javascript数组的属性'0'

问题描述 投票:-1回答:2

我正在尝试创建一个项目,计算输入到文本字段(由空格分隔)的一系列数字的总和和平均值。因此,在单个文本框中,用户将输入“1 2 3”,应该发生的是我接受输入,用空格分隔数字并将数字放入数组中。然后添加数组中的元素以返回总和并计算平均值。但是我坚持添加部分因为我在运行它时在控制台中不断收到错误“Uncaught TypeError:无法读取未定义的属性'0'。我已经找到了其他有过这个问题的人,但他们似乎正在做其他功能,他们的修复似乎对我不起作用。我在这里附上了我的代码。

我尝试过像javascript第13行的内容我将Number.numbers[i]更改为numbers[i].value并将输出更改为NaN。我很困惑,并希望得到任何帮助。谢谢!

javascript arrays for-loop dreamweaver uncaught-typeerror
2个回答
0
投票

要将字符串解析为数字,您需要执行以下操作:

号码(您的号码)。

所以你必须这样做:

sum += Number(numbers[i]);

0
投票

您的问题是您不会更改输入值的类型。当您从DOM元素获取值时,您将获得字符串,但是对于计算平均值,您需要键入“数字”。使用typeof运算符检查您的值。或者用我的例子来解决你的问题

let input = document.querySelector("#inputId");
// now your numbers is array from values with type "number" after
parseInt
let numbers = input.value.split(" ").map((n) => parseInt(n, 10));
let sum = numbers.reduce((sum, number) => sum + number, 0);
let average = sum / numbers.length;
© www.soinside.com 2019 - 2024. All rights reserved.