【问题标题】:"Uncaught TypeError: Cannot read property '0' of undefined" javascript array“未捕获的类型错误:无法读取未定义的属性 '0'”javascript 数组
【发布时间】:2018-08-08 01:59:51
【问题描述】:

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

我已经尝试过类似在第 13 行的 javascript 我将 Number.numbers[i] 更改为 numbers[i].value 并将输出更改为 NaN。我很困惑,希望能提供任何帮助。谢谢!

【问题讨论】:

  • 请写代码。比图片好。
  • 用 numbers[i].value 做一个 parseInt 即 parseInt(numbers[i].value) 你应该通过

标签: javascript arrays for-loop dreamweaver typeerror


【解决方案1】:

您的问题是您没有更改输入值的类型。 当你从 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;

【讨论】:

    【解决方案2】:

    要将字符串解析为数字,您需要这样做:

    号码(你的号码)。

    所以你必须这样做:

    sum += Number(numbers[i]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多