此代码生成错误“未捕获类型错误无法设置属性0的未定义”,而我想分配数组中的随机数,请帮助。Javascript无法设置属性0的undefined
var array;
for(var i = 1; i<10;i++) {
array[i]= Math.floor(Math.random() * 7);
}
console.log(array);
此代码生成错误“未捕获类型错误无法设置属性0的未定义”,而我想分配数组中的随机数,请帮助。Javascript无法设置属性0的undefined
var array;
for(var i = 1; i<10;i++) {
array[i]= Math.floor(Math.random() * 7);
}
console.log(array);
你缺少的数组初始化:
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);
只是一个建议,加入到你的答案......为了避免数组索引**'0' **变成**'undefined' **替换'array [i ] = Math.floor(Math.random()* 7);'用'array.push(Math.floor(Math.random()* 7));'这会将项目推入数组,而不是通过索引设置它们。 – NewToJS
我按照你的建议,但仍然没有解决 –
var array;对于(var i = 0; i <10; i ++){ array.push(Math.floor(Math.random()* 7)); } console.log(array); –
你的天堂”牛逼告诉array
是一个数组告诉它的JavaScript可以把它看成一个数组,
var array = [];
你需要加入这一行后,该阵列第一
var array = [];
初始化代码应能正常工作
你还没有指定“数组”的话,这目前还不是一个数组对象 –
定义'阵列'作为数组'var array = [];'并且为了避免未定义'array [0]'我建议你改变你的循环'var i = 0;我<9;我++'或可能使用'array.push();' – NewToJS
我遵循你的建议,但仍然没有解决。 –