Javascript无法设置undefined的属性0

aas*_*han 4 javascript

此代码生成错误"未捕获的类型错误无法设置未定义的属性0",而我想在数组中分配随机数,请帮忙.

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

Isa*_*sac 7

您缺少数组初始化:

var array = [];
Run Code Online (Sandbox Code Playgroud)

把它带到你的例子中,你会得到:

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

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

因此,更好的解决方案是从头开始0,并调整forto 的结尾<9,以便创建相同数量的元素:

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

  • 只是建议添加到你的答案......避免数组索引**`0`**变成**`undefined`**替换`array [i] = Math.floor(Math.random()*7);```array.push(Math.floor(Math.random()*7));`这会将项目推送到数组中,而不是通过索引设置它们. (2认同)