我明白你固定在 “阵列[I] =数字1;”是正确的方式。如果仍然无法理解问题,我有时会使用“警报”进行粗略调试 - 请参阅我的文章的底部。
在我看来就像你可以将它设置为0的3线(VAR数字1 = 0;) ,从不把它设置为别的。
让我们一起循环。
循环1:
if(array[i] > number3) {
number3 = array[i]
}
number3的上第一环路和数组= 0 [0] = 3,所以阵列的值[0]将被分配到number3的,使得number3的= 3
环2: 现在将跳过此否则如果
else if(array[i] > number2) {
number2 = array[i];
}
NUMBER2上第二环路和阵列[1] = 1,所以阵列的值[1]将被分配到数字2 = 0,使得数字2 = 1
循环3: 也将碰到的第一个否则如果因为数字2 = 1个阵列[I] = 2 现在NUMBER2将被分配2
else if(array[i] > number2) {
number2 = array[i];
}
现在您的循环与出打 然后完成最后的其他如果。所以number1仍等于0 除了你在做 array [i] = number1; 时,你应该这样做 数字1 =数组[我],而不是
else if (array[i] > number1) {
array[i] = number1;
}
至少这是它看起来像是在对我做。
示例警报以帮助调试。
<script>
var array = [3,1,2];
var array2 = []
var number1 = 0;
var number2 = 0;
var number3 = 0;
for(var i = 0; i < array.length; i++) {
alert('array['+i+']='+array[i] + ', number3 ='+number3 + ', number2 ='+number2 + ', number1 ='+number1)
if(array[i] > number3) {
number3 = array[i];
alert (' got here A');
}
else if(array[i] > number2) {
number2 = array[i];
alert (' got here B');
}
else if (array[i] > number1) {
number1 = array[i];
alert (' got here C');
}
}
console.log(number1)
console.log(number2)
console.log(number3)
</script>
希望有帮助。
非常简单 - 用于'number1 ='的CTRL-F。它只分配一次 - 为0.看起来像一个基本的错误 - 我认为你有第三个错误的方式。 – Katana314
我没有看到任何你重新分配或增加'number1'的地方。 – elethan
number1被赋值为0,就是这样。它从来没有分配过。 –