【问题标题】:Javascript cannot set property 0 of undefinedJavascript 无法设置未定义的属性 0
【发布时间】:2019-07-29 13:26:33
【问题描述】:

此代码产生错误:

未捕获的类型错误:无法设置未定义的属性“0”

虽然我想在数组中分配随机数,但请帮忙。

var array;
for (var i = 1; i < 10; i++) {
  array[i] = Math.floor(Math.random() * 7);
}
console.log(array);

【问题讨论】:

  • 您还没有将“数组”分配给任何东西,它目前不是数组对象
  • array 定义为数组var array=[]; 并避免array[0] 未定义我建议您更改循环var i = 0; i&lt;9;i++ 或者使用array.push();
  • 我听从了你的建议,但仍然没有解决。
  • @aashirkhan 也许这会有所帮助。我有一个我的建议的工作示例。 jsfiddle.net/zuzy01m2

标签: javascript


【解决方案1】:

您缺少数组初始化:

var array = [];

将此纳入您的示例,您将:

var array = []; //<-- initialization here
for(var i = 1; i<10;i++) {
    array[i]= Math.floor(Math.random() * 7);
}
console.log(array);

您还应该从索引0 开始分配值。正如您在日志中看到的,所有未分配的值都会得到undefined,这适用于您的索引0

因此更好的解决方案是从0 开始,并将for 的结尾调整为&lt;9,以便创建相同数量的元素:

var array = [];
for(var i = 0; i<9;i++) {
    array[i]= Math.floor(Math.random() * 7);
}
console.log(array);

【讨论】:

  • 只是一个建议添加到你的答案......为了避免数组索引 0 变成 undefined 替换 @ 987654335@ 和 array.push(Math.floor(Math.random() * 7)); 这会将项目推送到数组中,而不是通过索引设置它们。
  • var 数组; for(var i =0; i
  • @aashirkhan var array 是问题所在。您需要将其定义为数组。 var array=[] 让变量 array 等于 [] 非常重要任何误解jsfiddle.net/xuz4hgf3
  • @aashirkhan 非常欢迎。您也可以像这样定义变量array var array=new Array(); 工作示例:jsfiddle.net/6Lqduwy9
  • @aashirkhan 你应该接受这个答案并且标记被接受。看看stackoverflow.com/help/someone-answers
【解决方案2】:

你还没有告诉 array 是一个数组 告诉 javascript 将其视为一个数组,

var array = [];

【讨论】:

    【解决方案3】:

    你需要先初始化数组

     var array = [];
    

    添加此行后,您的代码应该可以正常工作

    【讨论】:

      猜你喜欢
      • 2011-11-20
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-11
      相关资源
      最近更新 更多