我明白你固定在 「陣列[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,就是這樣。它從來沒有分配過。 –