読み込み中...

JavaScriptでforEachとアロー関数を使いこなす10の方法

JavaScriptでforEachとアロー関数を使った処理の例 JS
この記事は約10分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

JavaScriptのforEachとアロー関数の魅力に迫ります。

この記事を読み終えれば、あなたもこれらの機能を自在に操れるようになるでしょう。

初心者の方にも分かりやすく、ステップバイステップで解説していきます。

●JavaScriptのforEachとは

JavaScriptにおいて、forEachは配列の要素を順番に処理するための便利なメソッドです。

繰り返し処理を簡潔に記述できる点が特徴です。

○基本的な使い方

forEachメソッドを使用すると、配列の各要素に対して同じ処理を適用できます。

具体例を見てみましょう。

const fruits = ['りんご', 'バナナ', 'オレンジ'];
fruits.forEach(function(fruit) {
  console.log(fruit + 'は美味しい果物です。');
});

このコードを実行すると、各果物名に「は美味しい果物です。」という文章が付加されて出力されます。

forEachを使用することで、配列の要素数に関わらず、全ての要素に同じ処理を適用できるのです。

●アロー関数とは

アロー関数は、ES6で導入された新しい関数の記法です。

従来の関数宣言よりも簡潔に記述できるため、コードの可読性が向上します。

○基本的な使い方

アロー関数の基本的な構文を見てみましょう。

const greet = (name) => {
  return 'こんにちは、' + name + 'さん!';
};

console.log(greet('田中')); // 出力: こんにちは、田中さん!

この例では、greetという名前の関数をアロー関数で定義しています。

引数としてnameを受け取り、挨拶文を返します。アロー関数を使用することで、関数の定義がより直感的になりました。

●forEachとアロー関数の使い方10選

ここからは、forEachとアロー関数を組み合わせた実践的な使用例を10個紹介します。

例を通じて、両者の力を存分に発揮する方法を学びましょう。

○サンプルコード1:配列の要素を表示

const colors = ['赤', '青', '緑', '黄', '紫'];
colors.forEach((color) => {
  console.log(color + 'は美しい色です。');
});

このコードでは、色の名前が格納された配列に対してforEachを適用しています。

アロー関数を使用することで、各色に対するメッセージをコンパクトに出力できます。

○サンプルコード2:オブジェクトのプロパティを操作

const students = [
  { name: '佐藤', score: 85 },
  { name: '鈴木', score: 92 },
  { name: '高橋', score: 78 }
];

students.forEach((student) => {
  student.grade = student.score >= 90 ? 'A' : student.score >= 80 ? 'B' : 'C';
});

console.log(students);

この例では、生徒の情報が格納されたオブジェクトの配列に対して、成績を付ける処理を行っています。

forEachとアロー関数の組み合わせにより、各生徒のオブジェクトに新しいプロパティを追加しています。

○サンプルコード3:フィルタリング

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const evenNumbers = [];

numbers.forEach((number) => {
  if (number % 2 === 0) {
    evenNumbers.push(number);
  }
});

console.log('偶数:' + evenNumbers.join(', '));

このコードでは、数値の配列から偶数だけを抽出しています。

forEachを使用することで、各要素を順番にチェックし、条件に合致する要素だけを新しい配列に追加しています。

○サンプルコード4:DOM要素の操作

<ul id="taskList">
  <li>買い物に行く</li>
  <li>レポートを書く</li>
  <li>運動する</li>
</ul>

<script>
  const tasks = document.querySelectorAll('#taskList li');
  tasks.forEach((task, index) => {
    task.textContent = `タスク${index + 1}: ${task.textContent}`;
    task.style.color = index % 2 === 0 ? 'blue' : 'green';
  });
</script>

この例では、HTMLのリスト要素に対して操作を加えています。

forEachを使用することで、各リスト項目にインデックス番号を付加し、さらに偶数番目と奇数番目で色を変えています。

○サンプルコード5:非同期処理

const urls = [
  'https://api.example.com/data1',
  'https://api.example.com/data2',
  'https://api.example.com/data3'
];

urls.forEach(async (url) => {
  try {
    const response = await fetch(url);
    const data = await response.json();
    console.log(`${url}からのデータ:`, data);
  } catch (error) {
    console.error(`${url}の取得に失敗:`, error);
  }
});

このサンプルでは、複数のAPIエンドポイントから非同期でデータを取得しています。

forEachとアロー関数を組み合わせることで、各URLに対して個別に非同期処理を行い、結果を表示しています。

○サンプルコード6:数値配列の計算

const prices = [1200, 1500, 800, 2000, 950];
let total = 0;

prices.forEach((price) => {
  total += price;
});

const average = total / prices.length;
console.log(`合計金額: ${total}円`);
console.log(`平均価格: ${average.toFixed(2)}円`);

この例では、商品価格の配列から合計金額と平均価格を計算しています。

forEachを使用することで、配列の各要素を順番に処理し、合計を算出しています。

○サンプルコード7:二次元配列の操作

const chessBoard = [
  ['♜', '♞', '♝', '♛', '♚', '♝', '♞', '♜'],
  ['♟', '♟', '♟', '♟', '♟', '♟', '♟', '♟'],
  [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
  [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
  [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
  [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
  ['♙', '♙', '♙', '♙', '♙', '♙', '♙', '♙'],
  ['♖', '♘', '♗', '♕', '♔', '♗', '♘', '♖']
];

chessBoard.forEach((row, rowIndex) => {
  let rowString = '';
  row.forEach((piece, columnIndex) => {
    rowString += piece + ' ';
  });
  console.log(`${8 - rowIndex} ${rowString}`);
});

console.log('  a b c d e f g h');

この例では、チェス盤を表現した二次元配列を処理しています。

外側のforEachで各行を、内側のforEachで各マスを処理し、チェス盤を整形して表示しています。

○サンプルコード8:条件分岐

const temperatures = [18, 25, 30, 15, 22, 28, 12];

temperatures.forEach((temp) => {
  if (temp < 20) {
    console.log(`${temp}℃: 寒い日です。暖かい服装を心がけましょう。`);
  } else if (temp >= 20 && temp < 25) {
    console.log(`${temp}℃: 快適な気温です。外出日和ですね。`);
  } else {
    console.log(`${temp}℃: 暑い日です。熱中症に注意しましょう。`);
  }
});

この例では、気温のデータに基づいてメッセージを出力しています。

forEachとアロー関数を使用することで、各気温に対して適切な条件分岐を行い、それぞれにふさわしいアドバイスを表示しています。

○サンプルコード9:チェーン処理

const words = ['Hello', 'World', 'JavaScript', 'Programming'];

words
  .map((word) => word.toUpperCase())
  .forEach((word) => {
    console.log(word);
    console.log('文字数:', word.length);
    console.log('-'.repeat(20));
  });

このコードでは、文字列の配列に対して複数の操作を連続して行っています。

まずmapメソッドで全ての単語を大文字に変換し、その結果に対してforEachを適用しています。

各単語とその文字数を表示し、区切り線を引いています。

○サンプルコード10:エラーハンドリング

const mixedData = [5, 'ten', 15, 'twenty', 25, null, 35, undefined, 45];

mixedData.forEach((item, index) => {
  try {
    if (typeof item !== 'number') {
      throw new Error(`インデックス${index}の要素が数値ではありません。`);
    }
    console.log(`${item}の2倍は${item * 2}です。`);
  } catch (error) {
    console.error(error.message);
  }
});

この例では、様々な型のデータが混在する配列を処理しています。

forEachとアロー関数を使用して各要素を処理し、数値でない要素に遭遇した場合はエラーを投げています。

try-catch文を使用することで、エラーが発生しても処理が中断されることなく、全ての要素に対して処理を続行できます。

まとめ

JavaScriptにおけるforEachとアロー関数は、コードをより簡潔に、より読みやすくするための強力なツールです。

本記事で紹介した10個のサンプルコードを通じて、これらの機能の柔軟性と有用性をご理解いただけたかと思います。

日々のプログラミング作業において、forEachとアロー関数を積極的に活用することで、コードの品質と生産性を向上させることができるでしょう。

ぜひ、自分のプロジェクトに取り入れて、その威力を実感してください。