forEach() と map() の使い分けについて教えてください

forEach は、それぞれの要素を用いて何らかの処理を行う、map は新しい配列を生成する、という違いがあります。
2023年8月19日
ユーザー

レッスンではチェックボックスの処理を forEach() を使って以下のように実装しています。

input.addEventListener('change', () => {
  todos.forEach((item) => {
    if (item.id === todo.id) {
      item.isCompleted = !item.isCompleted;
    }
  });
  localStorage.setItem('todos', JSON.stringify(todos));
});

上記コードを forEach() でなく map() を使って書いても一応動作しました。

input.addEventListener('change', () => {
  todos = todos.map((item) => {
    return {
      id: item.id,
      title: item.title,
      isCompleted: item.id === todo.id ? !item.isCompleted : item.isCompleted,
    };
  });
  localStorage.setItem('todos', JSON.stringify(todos));
});

上記コードで問題ないかお手数ですがご確認頂けないでしょうか。
(別レッスンで似たようなコードがあった気がするのですが。。)

forEach()map() の使い分けがよくわかっておりません。今回もどちらを使うか迷いました。
今回のケースでは何となく forEach() を使うのが妥当だと感じますが、両者の使い分けはどのようにすべきなのでしょうか。

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?

このレッスンの質問と回答(3)