今回はjavascriptの基本問題で、初心者の方にも取り組みやすい「数値の平均を求める」課題を解いていきたいと思います。
- 配列操作
- ループ処理
- 条件分岐
- 組み込み関数の使い方
を身につけましょう。
課題の紹介:平均値を求める関数
// 例:average([2, 4, 9, 8]) → 5.75 を返す
function average(arr) {
if (!Array.isArray(arr) || arr.length === 0) {
return 0;
}
let total = 0;
for (let i = 0; i < arr.length; i++) {
total += arr[i];
}
const avg = total / arr.length;
return parseFloat(avg.toFixed(2));
}
- 入力が配列でない、あるいは空配列なら
0
を返す - 合計を要素数で割り、小数点以下2桁に整形して返す
必要な JavaScript の基本構文
① 関数の宣言
function 関数名(引数) {
// 処理
}
関数は特定の処理をまとめて名前を付けたもの。引数を受け取り、処理結果を返します。
② 配列の扱い
Array.isArray(arr)
:値が配列かどうかを判定arr.length
:配列の要素数を取得
③ 繰り返し(for)
for (let i = 0; i < arr.length; i++) {
// arr[i] にアクセス
}
for文は指定した回数だけ処理を繰り返します。配列の各要素に対して処理を行う場合によく使います。
④ 条件分岐(if)
if文は条件によって処理を分岐させます。エッジケース(特殊なケース)の処理に便利です。
コード解説ステップ by ステップ
配列かどうかチェック
if (!Array.isArray(arr) || arr.length === 0) {
return 0;
}
Array.isArray
:配列判定arr.length === 0
:空配列判定
合計を求める
let total = 0;
for (let i = 0; i < arr.length; i++) {
total += arr[i];
}
total
に順番に加算していく
平均値を計算
const avg = total / arr.length;
合計 ÷ 要素数
小数点以下の調整
// toFixed → 文字列、parseFloat → 数値に戻す
return parseFloat(avg.toFixed(2));
toFixed(2)
:小数点以下2桁に丸めて文字列化parseFloat
:文字列→数値変換
登場する関数一覧
関数・メソッド | 役割の簡単説明 |
---|---|
Array.isArray(arr) | arr が配列か判定する |
arr.length | 配列の要素数を取得 |
toFixed(n) | 小数点以下 n 桁に丸め、文字列で返す |
parseFloat(str) | 文字列 str を浮動小数点数に変換 |
エッジケースへの対応
- 配列でない入力 →
0
を返却 - 空配列 →
0
を返却 - 文字列や
null
が混ざる配列の場合 → 今回は動作保証外(拡張課題として型チェックを追加可能)
まとめ
プログラミングは小さく分解しながら一つずつのパーツを考えて、組み合わせていくことで実現できます。合計するにはどんな関数を使うか、小数点を二位に止めるにはどのような関数を使用するか等、実現したいことを思い描くことが大切です。
- 問題を小さなステップに分解する
- エッジケースを必ず考慮する
- 関数の入出力仕様を明確にする
- コード内にコメントを残して可読性を高める
- 型の一貫性を保つ(数値型はtoFixedで文字列になることに注意)
次のステップとしては、
- 最大値・最小値を求める関数
- 中央値(メディアン)の計算
- 数値配列のフィルタリング
のような練習問題も面白いと思います。また基礎的なjavascriptの問題を取り上げていきたいと思います!
コメント