21.02.24 TIL .reduce

5744 ワード

const filterMaped = arr.filter(x => x % 2 !== 0).map(x => x * 2);
console.log(filterMaped) // [2, 6, 10]

=> ?


JSの最新バージョンは?標準ES 6で使われているはずです.

上記の機能は同じですが、より直感的に見えます.

解析

arr.filter(x => x % 2 !== 0) // x를 홀수인자들로 filter 처리하고
map(x => x * 2); // filter 처리된 x들에 2를 곱한다.

to reduce


filterとmapメソッドを別々に書くreduceメソッド
そのため,まずreduce法を振り返る.
reduce?
  • reduce()は、配列に存在する各要素に対してコールバック関数を1回実行しますが、空の要素は含まれません.
  • reduceは、以下の4つの因子を有する.
    アキュムレータ-累積(acc)
    current value-現在値(cur)
    現在のインデックス-現在の要素(idx)
    Array-ソースアレイ(arr)
  • .reduce(function(accumulator, currentValue, currentIndex, array)
  • 今.reudceメソッドを使用して新しい関数を作成します.
    let result = [1, 2, 3, 4, 5]; // 결과값인 [2, 6, 10]이 나올 배열을 설정하고
    let toReduce = result.reduce(function(acc, cur) { // 총 누산할 acc와 현재 요소인 cur을 인자로 받는다. 
      if (cur % 2 !== 0) { // filter부분 -> 먼저 홀수가 되는 요소들을 filtering 한 후,
        acc.push(cur * 2); // map 부분 -> 그 요소들에 2를 곱하여 acc에 push한다.
      }
    	return acc; // filter, map된 최종결과값 acc를 return한다.
    }, []) // 초기값은 배열의 형태로 추출할 것이기에 []로 설정
    console.logを撮って、確認結果値は[2,6,10]です.

    Point


    reduceは基本的に多才な方法であり,最低価格/最高価格,複数の配列の展開,オブジェクトのキー値の割り当てなどをフィルタリングできる.そこで,概念的な部分を明確にすることを学び,問題や状況に応じて最初の要素(ここでは空の配列[]である)を数字として選択し,配列として,オブジェクトとして,あるいは設定しないなどと感じた.