1. ホーム
  2. javascript

[解決済み] JavaScriptです。.forEach()と.map()の違いについて

2022-03-03 23:26:18

質問

このようなトピックがたくさんあったことは知っています。そして、基本的なことは知っています。 .forEach() は元の配列に対して操作し .map() を新しいものに置き換えます。

私の場合

function practice (i){
    return i+1;
};

var a = [ -1, 0, 1, 2, 3, 4, 5 ];
var b = [ 0 ];
var c = [ 0 ];
console.log(a);
b = a.forEach(practice);
console.log("=====");
console.log(a);
console.log(b);
c = a.map(practice);
console.log("=====");
console.log(a);
console.log(c);

そして、これが出力です。

[ -1, 0, 1, 2, 3, 4, 5 ]
=====
[ -1, 0, 1, 2, 3, 4, 5 ]
undefined
=====
[ -1, 0, 1, 2, 3, 4, 5 ]
[ 0, 1, 2, 3, 4, 5, 6 ]

を使う理由がわからない。 practice の値を変更します。 b から undefined .
これは愚かな質問であれば申し訳ありませんが、私はこの言語では非常に新しいですし、私がこれまでに見つけた答えは私を満足させませんでした。

どのように解決するのですか?

この2つは同じものではありません。その違いを説明しましょう。

forEach : これはリストに対して反復処理を行い、各リストメンバーに対して副作用のある操作(例:すべてのリストアイテムをデータベースに保存する)を適用し、何も返しません。

map : リストに対して反復処理を行い、そのリストの各メンバーを変換し、変換後のメンバーを含む同じサイズの別のリストを返します (例: 文字列のリストを大文字に変換する)。この関数が呼び出された配列は変更されません(コールバック関数が変更することはあります).

リファレンス

Array.prototype.forEach() - JavaScript | MDN Japanese

Array.prototype.map() - JavaScript | MDN 形式