Javascript:对嵌套for循环的工作方式感到困惑
为什么嵌套的Javascript:对嵌套for循环的工作方式感到困惑,javascript,arrays,for-loop,Javascript,Arrays,For Loop,为什么嵌套的for循环的工作方式与以下示例中的工作方式相同: var times = [ ["04/11/10", "86kg"], ["05/12/11", "90kg"], ["06/12/11", "89kg"] ]; for (var i = 0; i < times.length; i++) { var newTimes = []; for(var x = 0; x <
for循环
的工作方式与以下示例中的工作方式相同:
var times = [
["04/11/10", "86kg"],
["05/12/11", "90kg"],
["06/12/11", "89kg"]
];
for (var i = 0; i < times.length; i++) {
var newTimes = [];
for(var x = 0; x < times[i].length; x++) {
newTimes.push(times[i][x]);
console.log(newTimes);
}
}
然而,我实际上明白了这一点:
["04/11/10"]
["04/11/10", "86kg"]
["05/12/11"]
["05/12/11", "90kg"]
["06/12/11"]
["06/12/11", "89kg"]
有人能帮我理解这一点吗
编辑:
谢谢你的回复 您在每个循环上重新定义
新时间
,并在每次列推送时输出到控制台
var times = [
["04/11/10", "86kg"],
["05/12/11", "90kg"],
["06/12/11", "89kg"]
];
var newTimes = [];
for (var i = 0; i < times.length; i++) {
for(var x = 0; x < times[i].length; x++) {
newTimes.push(times[i][x]);
}
}
console.log(newTimes);
var时间=[
[“04/11/10”,“86kg”],
[“05/12/11”,“90kg”],
[“06/12/11”,“89公斤”]
];
var newTimes=[];
对于(var i=0;i
返回:[“04/11/10”、“86kg”、“05/12/11”、“90kg”、“06/12/11”、“89kg”]
请执行以下操作:
var newTimes = [];
for (var i = 0; i < times.length; i++) {
for(var x = 0; x < times[i].length; x++) {
newTimes.push(times[i][x]);
console.log(newTimes);
}
}
var newTimes=[];
对于(var i=0;i
每次通过循环都会重新初始化新的时间。如果日志语句为
console.log(times[i][x]);
相反,您可以输出完整的新列表
newTimes
,该列表在内部循环外部初始化,并随着每次内部循环迭代而增长。问题在于内部循环的第二轮,它将第二个元素推到newTimes中。无论如何,我不明白内环的原因。你可以写得简单得多:
var times = [
["04/11/10", "86kg"],
["05/12/11", "90kg"],
["06/12/11", "89kg"]
];
for (var i = 0; i < times.length; i++) {
console.log(time[i][0]);
console.log(time[i][1]);
}
var时间=[
[“04/11/10”,“86kg”],
[“05/12/11”,“90kg”],
[“06/12/11”,“89公斤”]
];
对于(var i=0;i
//记住计数器变量的增量
//总是在循环每次运行后执行
对于(变量i=0;i
var times = [
["04/11/10", "86kg"],
["05/12/11", "90kg"],
["06/12/11", "89kg"]
];
for (var i = 0; i < times.length; i++) {
console.log(time[i][0]);
console.log(time[i][1]);
}
// remember that the increment of the counter variable
// is always executed after each run of a loop
for (var i = 0; i < n; i++) {
// some statement(s) to do something..
// initializes child-loop counter in the first run of the parent-loop
// resets child-loop counter in all following runs of the parent-loop
// while i is greater than 0 and lower than n
for (var j = 0; j < p; j++) {
// some statement(s) to do something..
// initializes grandchild-loop counter in the first run of the child-loop
// resets grandchild-loop counter in all following runs of the child-loop
// while j is greater than 0 and lower than p
for (var k = 0; k < q; k++) {
// some statement(s) to do something..
// or add more internal loop-nestings if you like..
}
}
}
// if the counter variables of the descendent-loops were set before the loop-nesting,
// the inner loops would only run once, because the counter would keep the value
// of the abortion condition after the loop is finished