23 / 2785%

LESSON 23 ・ 関数

mapメソッド

mapで各要素を変換する

function square(x) {
  return x * x;
}

let a = [2, 3, 5];
let b = a.map(square);
for (const x of b) {
  console.log(x);
}

mapは代表的な高階メソッドです。配列の各要素に関数を適用した結果を返します。

たとえば、mapsquareを渡すと、元の配列のすべての要素を2乗した結果を返します。

function square(x) {
  return x * x;
}

let a = [2, 3, 5];
let b = a.map(square);
console.log(b);

PRACTICE

演習問題

コードを自分で書いて実行してから、答えと解説を確認しましょう。

問題1

[2, 3, 5]の各要素を2乗する関数squareを定義し、mapですべての要素を変換した結果を表示してください。

答えと解説を見る

模範解答

function square(x) {
  return x * x;
}

let numbers = [2, 3, 5];
let result = numbers.map(square);
console.log(result);

mapは各要素にsquareを適用します。結果は[4, 9, 25]です。

問題2

整数を1増やす関数addOneを定義し、mapを使って[1, 4, 7]の各要素に適用した結果を表示してください。

答えと解説を見る

模範解答

function addOne(x) {
  return x + 1;
}

let numbers = [1, 4, 7];
let result = numbers.map(addOne);
console.log(result);

mapへ関数addOneを渡すと、すべての要素に同じ処理が適用されます。結果は[2, 5, 8]です。

問題3

点数557088のすべてに5点を加えた新しい配列をmapで作ってください。さらに、変換後の点数をすべて足し、その合計を表示してください。

答えと解説を見る

模範解答

function adjustScore(score) {
  return score + 5;
}

let scores = [55, 70, 88];
let adjusted = scores.map(adjustScore);

let total = 0;
for (const score of adjusted) {
  total += score;
}

console.log(total);

mapで各点数を変換してから、これまでに学んだループで合計します。変換後は607593なので、合計は228です。