基本JavaScript循环出现问题
我是JavaScript编程的新手。在我们大学里,我们刚刚开始学习JavaScript循环。下面是使用for循环的代码:基本JavaScript循环出现问题,javascript,loops,for-loop,Javascript,Loops,For Loop,我是JavaScript编程的新手。在我们大学里,我们刚刚开始学习JavaScript循环。下面是使用for循环的代码: var i; var x = new Array(); var y = new Array(1, 1, 0, 3, 5); for (i = 0; i < y.length; i++) { x[y[i]] = y[i]; } 我不明白背后的逻辑。谁能帮帮我吗?因为你不是在按索引递增它。您正在根据y数组的索引值设置索引 因此,您在循环中所做的是 x[1] = 1
var i;
var x = new Array();
var y = new Array(1, 1, 0, 3, 5);
for (i = 0; i < y.length; i++) {
x[y[i]] = y[i];
}
我不明白背后的逻辑。谁能帮帮我吗?因为你不是在按索引递增它。您正在根据y数组的索引值设置索引 因此,您在循环中所做的是
x[1] = 1 // i = 0;
x[1] = 1 // i = 1;
x[0] = 0 // i = 2;
x[3] = 3 // i = 3;
x[5] = 5 // i = 4;
没有2或4的值,因此这些索引从未定义,因此它是未定义的
你想要的是
for (i = 0; i < y.length; i++) {
x[i] = y[i];
}
for(i=0;i
因为您没有按索引递增它。您正在根据y数组的索引值设置索引
因此,您在循环中所做的是
x[1] = 1 // i = 0;
x[1] = 1 // i = 1;
x[0] = 0 // i = 2;
x[3] = 3 // i = 3;
x[5] = 5 // i = 4;
没有2或4的值,因此这些索引从未定义,因此它是未定义的
你想要的是
for (i = 0; i < y.length; i++) {
x[i] = y[i];
}
for(i=0;i
首先让我们将其简化一点,并进行扩展以使其更清晰:
var x = new Array();
var y = new Array(1, 1, 0, 3, 5);
for(let i = 0; i < y.length; i++){
let key = y[i];
x[ key ] = y[i];
}
var x=newarray();
var y=新数组(1,1,0,3,5);
for(设i=0;i
在第一次求值时,i==0
,因此key==y[0]
或1
。现在我们有了键,我们将把键作为一个值分配给索引处的x
数组,该索引是存储在索引处i
的y
数组中的数字。因此x[y[0]]=y[0]
,因此x[1]==1
Wrince,重复。首先让我们将其简化一点,并扩展以使其更清晰:
var x = new Array();
var y = new Array(1, 1, 0, 3, 5);
for(let i = 0; i < y.length; i++){
let key = y[i];
x[ key ] = y[i];
}
var x=newarray();
var y=新数组(1,1,0,3,5);
for(设i=0;i
在第一次求值时,i==0
,因此key==y[0]
或1
。现在我们有了键,我们将把键作为一个值分配给索引处的x
数组,该索引是存储在索引处i
的y
数组中的数字。因此x[y[0]]=y[0]
,因此x[1]==1
Wrince,重复。您必须意识到,将数据放入数组X的位置取自数组Y 由于数组Y只有以下数字(表示位置):0、1、3、5,因此2和4将在数组X中未定义位置
vari;
var x=新数组();
var y=新数组(1,1,0,3,5);
对于(i=0;i }
您必须意识到,数据放入数组X的位置取自数组Y
由于数组Y只有以下数字(表示位置):0、1、3、5,因此2和4将在数组X中未定义位置
vari;
var x=新数组();
var y=新数组(1,1,0,3,5);
对于(i=0;i }
好的,让我们逐一循环:
i=0
x[1]=1//因为y[0]=1
i=1
x[1]=1//因为y[1]=1
i=2
x[0]=0//因为y[2]=0
i=3
x[3]=3//因为y[3]=3
i=4
x[5]=5//因为y[4]=5
因此,您在
x
中为索引0、1、3和5设置了值,而不是2和4,这就是为什么这些值未定义的原因好的,让我们逐个循环:
i=0
x[1]=1//因为y[0]=1
i=1
x[1]=1//因为y[1]=1
i=2
x[0]=0//因为y[2]=0
i=3
x[3]=3//因为y[3]=3
i=4
x[5]=5//因为y[4]=5
因此,您在x
中为索引0、1、3和5设置了值,而不是2和4,这就是为什么这些值是未定义的尝试写下每个迭代,并查看x
在后续步骤中的变化
START // []
x[y[0]] = y[0]; // x[1] = 1; [undefined, 1]
x[y[1]] = y[1]; // x[1] = 1; [undefined, 1]
x[y[2]] = y[2]; // x[0] = 0; [0, 1]
x[y[3]] = y[3]; // x[3] = 3; [0, 1, undefined, 3]
x[y[4]] = y[4]; // x[5] = 5; [0, 1, undefined, 3, undefined, 5]
试着写下每次迭代,看看x
在后续步骤中是如何变化的
START // []
x[y[0]] = y[0]; // x[1] = 1; [undefined, 1]
x[y[1]] = y[1]; // x[1] = 1; [undefined, 1]
x[y[2]] = y[2]; // x[0] = 0; [0, 1]
x[y[3]] = y[3]; // x[3] = 3; [0, 1, undefined, 3]
x[y[4]] = y[4]; // x[5] = 5; [0, 1, undefined, 3, undefined, 5]
你到底不明白什么?i=0->x[1]=1,i=1->x[1]=1,i=2->x[0]=0,i=3->x[3]=3,i=4->x[5]=5
所以x[2]和x[4]永远不会被忽略set@mplungjan哇,如果OP在破译他所看到的代码时遇到困难,这将更加令人困惑不。他是一名大学生,你到底不明白什么?i=0->x[1]=1,i=1->x[1]=1,i=2->x[0]=0,i=3->x[3]=3,i=4->x[5]=5
所以x[2]和x[4]永远都不会被忽略set@mplungjan哇,如果OP在破译他所看到的代码时遇到困难,这将更加令人困惑不。他是一名大学生非常感谢你的解释!非常感谢您的解释!我读了托马斯的文章,然后又回到了你的文章。非常感谢你!我读了托马斯的文章,然后又回到了你的文章。非常感谢你!提供有用信息的我花了一段时间才弄到,但现在已经非常清楚了。非常感谢。提供有用信息的我花了一段时间才弄到,但现在已经非常清楚了。非常感谢。试过你的代码,经过一番努力,我明白了。非常感谢。试过你的代码,经过一番努力,我明白了。非常感谢。