2017-06-14 218 views
1

此代码生成错误“未捕获类型错误无法设置属性0的未定义”,而我想分配数组中的随机数,请帮助。Javascript无法设置属性0的undefined

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

你还没有指定“数组”的话,这目前还不是一个数组对象 –

+0

定义'阵列'作为数组'var array = [];'并且为了避免未定义'array [0]'我建议你改变你的循环'var i = 0;我<9;我++'或可能使用'array.push();' – NewToJS

+0

我遵循你的建议,但仍然没有解决。 –

回答

5

你缺少的数组初始化:

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年底<9,使之产生相同数量的元素:

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

+1

只是一个建议,加入到你的答案......为了避免数组索引**'0' **变成**'undefined' **替换'array [i ] = Math.floor(Math.random()* 7);'用'array.push(Math.floor(Math.random()* 7));'这会将项目推入数组,而不是通过索引设置它们。 – NewToJS

+0

我按照你的建议,但仍然没有解决 –

+0

var array;对于(var i = 0; i <10; i ++){ array.push(Math.floor(Math.random()* 7)); } console.log(array); –

2

你的天堂”牛逼告诉array是一个数组告诉它的JavaScript可以把它看成一个数组,

var array = []; 
0

你需要加入这一行后,该阵列第一

var array = []; 

初始化代码应能正常工作

相关问题