Skip to content
Playground

演習: 関数

名前を引数として受け取り、"○○さん、こんにちは" と出力する関数 greet を作成してください。

greet("田中");
greet("鈴木");

出力例:

田中さん、こんにちは
鈴木さん、こんにちは
ヒント

本文 3-1 のコード例と同じ構造です。

縦と横を引数として受け取り、長方形の面積を 返す 関数 calcArea を作成してください。出力は関数の外で行います。

const area1 = calcArea(5, 3);
const area2 = calcArea(10, 7);
console.log(area1);
console.log(area2);

出力例:

15
70
ヒント

console.log() ではなく return を使って結果を返します。

以下のコードの出力結果を予測してから実行してください。

function double(x) {
return x * 2;
}
let value = 3;
value = double(value);
console.log(value);
value = double(value);
console.log(value);
value = double(value);
console.log(value);
ヒント

double(3)6 を返します。その 6value に入り、次の double(value) では double(6) が実行されます。

2 つの数値を引数で受け取り、大きいほうの値を返す関数 getMax を作成してください。2 つの値が等しい場合は、どちらを返しても構いません。

console.log(getMax(30, 45));
console.log(getMax(100, 50));
console.log(getMax(7, 7));

出力例:

45
100
7
ヒント

本文 5-1 の getMax と同じです。if で比較して、大きいほうを return します。

単価と個数から小計(単価 × 個数)を返す関数 calcSubtotal を作成してください。その関数の戻り値を別の計算に使い、以下の 2 種類の商品の合計金額に 10% の消費税を加えた税込み金額を計算して出力してください。

  • 商品 A: 単価 500 円、3 個
  • 商品 B: 単価 200 円、5 個

出力例:

2750
ヒント

calcSubtotal(500, 3)calcSubtotal(200, 5) の戻り値をそれぞれ変数に入れ、それらを足した値に消費税を加算します。本文 4-3 の calcSubtotal の例と同じ流れです。

配列を引数として受け取り、最小値を返す関数 findMin を作成してください。

console.log(findMin([45, 12, 78, 34, 6, 91]));
console.log(findMin([100, 200, 50]));

出力例:

6
50
ヒント

本文 5-2 の findMax と同じ構造です。比較の向きを逆にしてください。

以下の関数 findMax は配列の最大値を返します。/* ??? */ に入るコードを、選択肢から選んでください。

function findMax(arr) {
let max = /* ??? */;
for (let i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}

選択肢:

  • (ア) 0
  • (イ) arr.length
  • (ウ) arr[0]
  • (エ) arr[arr.length - 1]
ヒント

max は「今のところ一番大きい要素」を表す変数です。ループは i = 1 から始まるので、arr[0]max の初期値を通してしか比較されません。以下の配列で各選択肢がどう動くか考えてみてください。

  • [-5, -3, -8](全要素が負の数)
  • [99, 1, 2, 3](最初の要素が最大)

配列を引数として受け取り、全要素の合計を返す関数 calcSum を作成してください。

console.log(calcSum([80, 65, 90, 70, 85]));
console.log(calcSum([10, 20, 30]));

出力例:

390
60
ヒント

本文 5-3 の calcSum と同じです。合計を保持する変数を 0 で初期化し、ループで各要素を足していきます。

配列を引数として受け取り、偶数の個数を返す関数 countEven を作成してください。

console.log(countEven([1, 2, 3, 4, 5, 6]));
console.log(countEven([7, 9, 11]));

出力例:

3
0
ヒント

カウント用の変数を 0 で初期化し、偶数が見つかるたびに 1 を足します。最後にカウントを return で返します。

購入金額に応じた割引率(%)を返す関数 getDiscountRate を、早期リターンを使って作成してください。

条件戻り値
金額が負の値-1(不正な値)
3,000 円未満0
10,000 円未満5
10,000 円以上10
console.log(getDiscountRate(-100));
console.log(getDiscountRate(1500));
console.log(getDiscountRate(5000));
console.log(getDiscountRate(20000));

出力例:

-1
0
5
10
ヒント

本文 4-4 の checkAge と同じパターンです。条件式を上から順に評価し、true になった時点で return で値を返します。return が実行されると関数はそこで終わるので else を書く必要はありません。

以下のコードの出力結果を予測してから実行してください。

function mystery(arr) {
let result = 0;
for (let i = 0; i < arr.length; i++) {
if (arr[i] > 0) {
result = result + arr[i];
}
}
return result;
}
console.log(mystery([3, -1, 4, -2, 5]));
console.log(mystery([-3, -1, -4]));
ヒント

arr[i] > 0 は「正の数かどうか」の判定です。配列の各要素を順に見て、この関数が何を計算しているかを考えてください。

配列を引数として受け取り、配列の平均値より高い値の個数を返す関数 countAboveAverage を作成してください。

console.log(countAboveAverage([80, 65, 90, 70, 85]));
console.log(countAboveAverage([50, 60, 70, 80, 90]));
console.log(countAboveAverage([100, 100, 100]));

出力例:

3
2
0
ヒント

配列を 2 回走査します。1 回目のループで合計を求めて平均を計算し、2 回目のループで平均より大きい要素を数えます。平均の計算には本文 5-3 の calcSum と同じパターンが使えます。