レッスンに戻る

入力値の合計

重要性: 4

次のような関数 sumInput() を書きなさい:

  • 値に関して、prompt を使ってユーザに訪ね、配列にその値を格納します。
  • ユーザが非数値、空文字、または “キャンセル” を選択したとき、数値を尋ねるのを終了します。
  • 配列のアイテムを計算し、合計を返します。

P.S. ゼロ 0 は有効な数値です。ゼロで入力をストップしないでください。

デモを実行

些細ですが重要な解法の詳細に注意してください。私たちは、prompt のあと、すぐに value を数値に変換しません。なぜなら、value = +value の後に、ゼロ(有効数字)から空の文字列(停止のサイン)を伝えることができないからです。私たちは後ほど代わりにそれを行います。

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() );