用于初始化Javascript数组的数组的嵌套For循环
Nested For loop for initializing array of arrays for Javascript
我的程序中有一个非常简单的部分出现了问题…数组'population'中的元素也是一个数组。有28个随机数,每个"临时"数组被加载到数组人口。我的问题是,数组'人口'的所有相同的数组保存在其中,就像它被覆盖每一个循环。我花了这么多时间在这个非常简单的问题上,这是某种bug吗?注释的"alert"用于检查人口中的元素0和1。每次循环它都会被重写所以population数组中的每个temp元素都是一样的。请帮帮我……
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
为局部变量,因此它们不是隐式全局变量。
这是因为它们是同一个数组。使用temp = []
创建它,然后将它分配给每个population[i]
, i=0..9
相关文章:
- 在for循环中使用多维数组设置google.maps.Marker图标
- Javascript-用于展开数组的递归/for循环
- JavaScript-将for循环的多个结果推送到数组中
- 将值从for循环(在另一个for循环中)JavaScript中推送到数组
- 使用条件for循环更新数组-Javascript
- 使用for循环填充document.getelementbyid中的数组
- 将推入式数组与for一起使用..在..循环中
- For循环与数组不起作用
- 将数组与For循环进行比较
- 如何在 for 循环中访问 json 数组字段的名称
- 访问带有 for 循环中的计数器的数组
- 使用RegExp循环数组而不是for循环(Javascript)
- JavaScript:如何在 for 循环期间跳过数组中的当前项目?(继续?
- Javascript:数组和For循环基础知识
- 如何使用javascript中的for循环成对检索数组元素
- 如何使用for循环语句通过Ajax发送大数据数组
- 如何在JavaScript中正确地将对象从for循环推送到数组
- 对象作为关联数组:for循环
- Howler.js - 从数组/for循环中引用和触发文件
- 通过输入字段和php数组+ for循环声明和使用变量