I SEE YOU FIXED THE "array[i] = number1;" to be the right way. If still having trouble understanding issues i sometimes put in crude debugging using "alerts" - see bottom of my post .
Looks to me like you simply set it to 0 in line 3 (var number1 = 0; )
and never set it to anything else.
lets go loop by loop.
loop 1:
if(array[i] > number3) {
number3 = array[i]
}
number3 = 0 on first loop and array[0] = 3, so value of array[0] will be assigned to number3, making number3 = 3
loop 2:
will now skip to this else if
else if(array[i] > number2) {
number2 = array[i];
}
number2 = 0 on second loop and array[1] = 1, so value of array[1] will be assigned to number2, making number2 = 1
loop 3:
will also hit the first else if since number2 = 1 and array[i] = 2
now number2 will be assigned 2
else if(array[i] > number2) {
number2 = array[i];
}
now your looping is done then with out hitting
the last else if. so number1 still equals 0
besides that you are doing
array[i] = number1;
when you should do something like
number1 = array[i] instead
else if (array[i] > number1) {
array[i] = number1;
}
at least this is what it looks like it's doing to me.
Sample alerts to help debug.
<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>
hope that helps.
number1 =. It's only assigned once - as 0. Seems like a basic mistake - I think you have the third else the wrong way around.number1.a = xisa <- xin pseudo-code. It's not a commutative operation as it is in Mathematics. So,number1has its default value because you don't change it.