[CS]Reduce補習日-22


reduceとreduceRight


forEach, for, for..ofを使用して、アレイ内の要素を繰り返し処理します.
各要素の周りで繰り返し操作を行い、マッピングを使用して新しい配列形式の作業成果物を得ることができます.
arr.reduceおよびarr.reduceRightも同様の方法を用いる.

注意事項


arr.reduceおよびarr.reduceRightは、配列に基づいて値をエクスポートするために使用されます.
ex)reduce基本構文
let result = arr.reduce(function(acc, cur, index){
	// ...
}, [initial]);
  • acc:前の関数を呼び出した結果
  • initial:関数の初回呼び出し時に使用する初期値を示す
  • cur:現在の配列要素
  • index:要素の位置
  • 前の関数を呼び出す結果は、次の関数を呼び出すときに最初の引数(previousValue)として使用されます.
    最初の引数は、以前に呼び出された関数の結果を蓄積するアキュムレータ(アキュムレータ)です.
    reduceを使用すると、配列内のすべての要素の値を1行のコードで求めることができます.
    ex)
    let arr = [1,2,3,4,5];
    
    let result = arr.reduce(function(acc, cur){
    	return acc + cur;
        // 풀어쓰면
        // acc += cur
        // return acc; 가 된다. 
    }, 0);
    
    console.log(result); // 결국 출력은 15
    reduceに渡される関数は2つしかありません.通常は2つしか受信されません.

  • 関数は、最初の呼び出し時の最後の部分(0)で開始点を指定します.配列の最初の要素arr[0]が割り当てられています.

  • その後も並び続ける2 3 4 5
    △acc+curなので加算します.*面を乗じます.

  • 上記の手順を繰り返した後、結果値を返します.
  • 初期値をゼロに減らす必要はありません。


    arr.reduceRightにも同様の機能がありますが、右側から演算を実行する点が異なります.

    Array.isArrayで並べますか?


    JavaScriptでは、配列は独立したデータ型ではなくオブジェクト型に属します.
    したがって、typeofは通常のオブジェクトと配列を区別できません.
    ex)
    console.log(typeof {}); // object 출력
    console.log(typeof []); // object 출력
    配列は一般的なデータ構造です.そのため、平らに敷くかどうかを鑑別する方法が必要です.(Array.isArray)

    valueが配列の場合true、非配列の場合false

    console.log(Array.isArray({})); // false 출력
    console.log(Array.isArray([])); // true 출력

    配列方法と「thisArg」


    find、filter、mapは、thisArgというパラメータをオプションとして受信できます.
    ex)
    console.log(arr.find(func, thisArg);
    console.log(arr.filter(func, thisArg);
    console.log(arr.map(func, thisArg);
    this Argがfuncになったthis