Javascript - cannot subtract Ints after conversion with ParseInt

The variable logincompare_user is taken from the login, which gives us the position in which the user is in the list, and the corresponding money will be in the same position in the achorro and monetary lists. Why does this subtraction not work?

var ahorros = [5000,6000,10000]; var monetaria = [2000,15000,1000]; var registro = []; function transferencias(ahorros ,monetaria,registro,logincompare_user){ var cta_ahorro = ahorros[logincompare_user]; var cta_monetaria = monetaria[logincompare_user]; registro.push("Entrada a Transferencias " + Math.floor(Date.now()/1000) + '\n'); var eleccion_cta = prompt(' Bienvenid@ a Transferencias, que desea hacer?\n'+ "1 - Ahorros a Monetaria\n"+ '2 - Monetaria a Ahorros\n'+ '0 - Log Out'); while (eleccion_cta >= 0 && eleccion_cta <= 2){ if (eleccion_cta == 1){ var transfer = prompt("Cuanto desea transferir?",0); var trans_int = parseInt(transfer,0); if (trans_int <= cta_ahorro){ cta_ahorro = cta_ahorro - transfer; cta_monetaria = cta_monetaria + transfer; } else{ alert("Error"); transferencias(ahorros,monetaria,registro,logincompare_user); } } else if (eleccion_cta == 2){ var transfer_1 = prompt("Cuanto desea transferir?"); if (transfer_1 <= cta_monetaria && transfer_1 === parseInt(transfer_1)){ cta_ahorro = cta_ahorro + transfer_1; cta_monetaria = cta_monetaria - transfer_1; } else{ alert("Ingrese un numero por favor"); transferencias(ahorros,monetaria,registro,logincompare_user); } } else if (eleccion_cta == 0){ log_out(logincompare_user,registro,ahorros,monetaria) } else{ alert("Opcion Invalida"); transferencias(ahorros,monetaria, registro,logincompare_user) } } 
+5
source share
2 answers

You add / subtract the transfer variable instead of cta_ahorro and cta_monetaria instead of the trans_int variable. transfer is a string when you try to add it with an int variable that causes the problem. I adjusted your code and mentioned below:

 var ahorros = [5000,6000,10000]; var monetaria = [2000,15000,1000]; var registro = []; function transferencias(ahorros, monetaria, registro, logincompare_user) { var cta_ahorro = ahorros[logincompare_user]; var cta_monetaria = monetaria[logincompare_user]; console.log(cta_ahorro); // Printing for confirmation console.log(cta_monetaria); // Printing for confirmation registro.push("Entrada a Transferencias " + Math.floor(Date.now() / 1000) + '\n'); var eleccion_cta = prompt(' Bienvenid@ a Transferencias, que desea hacer?\n' + "1 - Ahorros a Monetaria\n" + '2 - Monetaria a Ahorros\n' + '0 - Log Out'); while (eleccion_cta >= 0 && eleccion_cta <= 2) { if (eleccion_cta == 1) { var transfer = prompt("Cuanto desea transferir?", 0); var trans_int = parseInt(transfer, 0); if (trans_int <= cta_ahorro) { cta_ahorro = cta_ahorro - trans_int; // Here is change cta_monetaria = cta_monetaria + trans_int; // Here is change console.log(cta_ahorro); // Printing for confirmation console.log(cta_monetaria); // Printing for confirmation } else { alert("Error"); transferencias(ahorros, monetaria, registro, logincompare_user); } } else if (eleccion_cta == 2) { var transfer = prompt("Cuanto desea transferir?"); var trans_int = parseInt(transfer, 0); if (trans_int <= cta_monetaria) { cta_ahorro = cta_ahorro + trans_int; // Here is change cta_monetaria = cta_monetaria - trans_int; // Here is change console.log(cta_ahorro); // Printing for confirmation console.log(cta_monetaria); // Printing for confirmation } else { alert("Ingrese un numero por favor"); transferencias(ahorros, monetaria, registro, logincompare_user); } } else if (eleccion_cta == 0) { log_out(ahorros, monetaria, registro, logincompare_user) } else { alert("Opcion Invalida"); transferencias(ahorros, monetaria, registro, logincompare_user) } var eleccion_cta = prompt(' Bienvenid@ a Transferencias, que desea hacer?\n' + "1 - Ahorros a Monetaria\n" + '2 - Monetaria a Ahorros\n' + '0 - Log Out'); } } 
+1
source

The bottom line will never become true , since === will check both the type and value for transfer_1 and parseInt (transfer_1).

 if (transfer_1 <= cta_monetaria && transfer_1 === parseInt(transfer_1)) 

You can do the following.

  var transfer_1 = prompt("Cuanto desea transferir?"); transfer_1 = parseInt(transfer_1); if (transfer_1 != undefined && transfer_1 <= cta_monetaria) { cta_ahorro = cta_ahorro + transfer_1; cta_monetaria = cta_monetaria - transfer_1; } 
0
source

Source: https://habr.com/ru/post/1236990/


All Articles