Probé el siguiente código, pero la caja del interruptor no funciona como esperaba. ¿Puedes decirme dónde me estoy equivocando?
function counter() { // const arr = prompt("Enter numbers").split(","); let arr = [1,2,3,-1,0]; console.log(arr.length); const neg=0, pos=0, zero=0; for (var i = 0; i < arr.length; i++) { let val = arr[i]; console.log(val); switch (val) { case (val === 0): zero += 1; console.log("zero"); break; case (val < 0): neg += 1; console.log("neg"); break; case (val > 0): pos += 1; console.log("pos"); break; default: console.log("not working"); break; } } document.write("Negatives: " + neg+"<br>"); document.write("Positives: " + pos+"<br>"); document.write("Zeroes: " + zero+"<br>"); }
No puede reasignar una const
. Algo como esto arrojará un error:
const num = 0; num += 1; // Uncaught TypeError: Assignment to constant variable.
Otro problema: en las declaraciones de su case
, está utilizando expresiones que se evalúan como true
o false
(las expresiones se evaluarán antes de hacer coincidir), por lo que tendrá que usar switch(true)
en lugar de switch(val)
:
function counter() { // const arr = prompt("Enter numbers").split(","); let arr = [1,2,3,-1,0]; let neg=0, pos=0, zero=0; for (var i = 0; i < arr.length; i++) { let val = arr[i]; switch (true) { case (val === 0): zero += 1; console.log("zero"); break; case (val < 0): neg += 1; console.log("neg"); break; case (val > 0): pos += 1; console.log("pos"); break; default: console.log("not working"); break; } } document.write("Negatives: " + neg+"<br>"); document.write("Positives: " + pos+"<br>"); document.write("Zeroes: " + zero+"<br>"); } counter()