アレイ高次関数Array.forEach


高次関数の復習


foreachの名前から分かるように、配列内の要素「各」に対していくつかの機能を実行する方法です.
Array.sort文書で述べたように,関数プログラミングは論理に存在する条件文と繰返し文を除去することによって複雑さを解決し変数の使用を抑制し,状態変更を回避するプログラミングモードである.
ちょっと難しいです.例を見てみましょう
const numbers = [1, 2, 3];
const pow = [];

//for 문으로 배열 순회
for(let i = 0; i < numbers.length; i++) {
  pows.push(number[i] ** 2);
}
console.log(pows); // [1, 4, 9]
上のコードは配列数の要素を二乗するコードです.論理を見てみましょう
1.新しい配列powを作成して平方値(空の配列)を含む
2.for文numberを繰り返します.lengthに巡回
3.戻ると、その値の二乗をpows(push)に追加します.
4.出力結果
条件文や重複文は論理の流れを理解しにくい.特にfor文は反復文に変数を宣言し,条件式と増減式を記述する.

Array.forEach


forEachメソッドは,for文に代わる高次関数といえる.
foreachは自分の内部で繰り返し文を実行します.すなわち反復文の抽象的な方法である.内部では、呼び出した独自の配列を繰り返し文でループし、実行する処理をコールバック関数として渡して繰り返します.
上記の例のコードをforeachで実装しましょう.
const numbers = [1, 2, 3];
const pow = [];

// forEach 메소드는 numbers배열의 모든 요소를 순회, 콜백함수 반복호출 한다.
numbers.forEach(item => pows.push(item * 2));
console.log(pows); //[1, 4, 9]
驚きました.上のコードと違って、本当に簡潔に表現できます.
この例では、forEachはnumbers配列のすべての要素を巡回し、コールバック関数を繰り返し呼び出します.numbersの配列要素は3つあるので,コールバックも3回発生する.この場合、コールバックを呼び出すforEachメソッドは、パラメータをコールバック関数に渡すことができます.
forEachメソッドのコールバック関数は、forEachメソッドを呼び出す配列の要素値とインデックス、およびforEachを呼び出す配列自体を渡します.
1.配列内の要素値
2.索引
3.呼び出された配列(this)
これも難しいですね.コードでチェック!
[1, 2, 3].forEach((item, index, arr) => {
  console.log(`요소값: ${item}, 인덱스: ${index}, this: ${JSON.stringify(arr)}`)
});
JSON.stringifyメソッドはJSON文字列を返します.
上記の例ではarr配列を文字列として出力します.
forEachメソッドでは、元のアレイは変更されません.ただし、コールバック関数でソースアレイを変更できます.
const number = [1, 2, 3];

// forEach 메소드는 원본 배열을 변경하지 않지만 콜백 함수를 통해 원본 배열 변경은 가능하다.
// 콜백 함수의 세번째 매개변수 arr은 원본 배열 numbers를 가리킨다.
// 따라서 콜백 함수의 세 번재 매개변수 arr을 직접 변경하면, 원본 배열 numbers 가 변경된다.
numbers.forEach((item, index, arr) => {
arr[index] = item ** 2
})
console.log(numbers); // [1, 4, 9] 원본 배열이 변경되었다!
foreachも内部で重複文論理を実行する.しかし、内部シールドは、論理の流れをより理解しやすくし、複雑さを解決します.
また、for文とは異なり、break、continueは使用できません.巡回配列の各要素は、真ん中に止まらない.

学習体験.


以前の勉強の方法とは少し違います.より深い関数に対してjavascriptの動作原理はもっと好奇心がある.矢印関数と高次関数法を組み合わせて,コードが簡潔で直感的である.すべての方法を暗記することはできませんが、反射的な状況で、瞬時に適切な方法を考えて問題を解決できる開発者になりたいと思っています.🙇🏻‍♂️
難しいのは罠
また,foreachメソッドの性能はfor文に及ばない.(知らなかった)
しかし、その可読性は非常に良いようで、非常に時間のかかる複雑なコードでなければforeachを使用してください.