torna alle lezioni

Somma dei numeri inseriti

importanza: 4

Scrivete una funzione sumInput() che:

  • Richiede all’utente dei valori tramite prompt e memorizza i valori in un array.
  • Termina se l’utente inserisce un valore non numerico, una stringa vuota, o preme “Cancel”.
  • Calcola e ritorna la somma degli elementi dell’array.

P.S. Lo 0 è un numero valido, non deve interrompere l’input.

Esegui la demo

Da notare un dettaglio sottile ma importante. Non convertiamo immediatamente value ad un numero subito dopo averlo prelevato con prompt, perchè successivamente tramite value = +value non saremmo in grado di distinguere una stringa vuota da uno zero. Quindi è necessario eseguire la conversione in un secondo momento.

function sumInput() {

  let numbers = [];

  while (true) {

    let value = prompt("A number please?", 0);

    // should we cancel?
    if (value === "" || value === null || !isFinite(value)) break;

    numbers.push(+value);
  }

  let sum = 0;
  for (let number of numbers) {
    sum += number;
  }
  return sum;
}

alert( sumInput() );