我的程序中有一个非常简单的部分存在问题...... 数组“population”中的元素也是一个数组。每个“temp”数组有 28 个随机数,加载到数组population 中。我的问题是数组“population”以某种方式保存了所有相同的数组,就像它被覆盖每个循环一样。我在这个非常简单的问题上花了这么多时间,这是某种错误吗?带注释的“alert”用于检查总体中的元素 0 和 1。不知何故,它确实在每个循环中被覆盖,因此填充数组中的每个临时元素都是相同的。请帮助我..
var population[];
function init_population(){
temp = [];
//Math.floor(Math.random()*8);
for(i=0;i<10;i++){
for(j=0;j<28;j++)
temp[j] = Math.floor(Math.random()*8);
population[i]= temp;
//alert("population[0] = " +population[0] +" and population[1] = " +population[1]);
}
}
init_population();
最佳答案
您需要在内部循环中创建一个新的 temp
数组,这样您就不会一遍又一遍地重复使用同一数组:
var population = [];
function init_population() {
var temp, i, j;
for(i=0; i<10; i++) {
temp = [];
for(j=0; j<28; j++) {
temp[j] = Math.floor(Math.random()*8);
}
population[i] = temp;
}
}
init_population();
由于将 temp
数组分配给 population
数组只会放置对 temp
数组的引用,因此当您继续使用相同的 temp
数组一遍又一遍,最终会在 population
数组的每个索引处引用同一个 temp
数组。相反,如果您在内部循环中创建一个新的 temp
数组,则 population
数组中的每个数组都将不同。
仅供引用,我还对您的代码进行了一些其他更正,以正确地将变量 temp
、i
和 j
声明为局部变量,以便它们不是隐式全局变量。
关于javascript - 用于初始化 Javascript 数组数组的嵌套 For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14433934/