기록

reduce 함수

해은 2020. 12. 2. 17:10

reduce는 배열의 각 요소에 대해 callback을 실행하며 단 하나의 출력값(수치, 문자열, 배열, 딕셔너리)을 만듭니다.

arr.reduce(callback( accumulator, currentValue, [, index[, array]] )[, initialValue])

accumulator: 콜백의 마지막 호출에서 이전에 반환 된 누적 값 입니다.

currentValue: 배열에서 처리중인 현재 요소값 입니다.

index: 배열에서 처리중인 현재 요소의 인덱스 입니다. 

array: arr 입니다.

initialValue: accumulator의 초기값 입니다.

 

배열 원소들의 합 구하기

let total = [1,2,3,4,5].reduce((acc,curr) => acc+curr, 0);

console.log(total) // 15
let total = [{quntity:1},{quntity:2},{quntity:3}].reduce(
	(accc,cur) => acc + cur.quntity
    ,0
);

console.log(total) // 6

 

배열 원소들 중 최대값 구하기

음수 무한대로 초기화

let max = [1,2,3,4,5].reduce((max,cur) => Math.max(max,cur),-Infinity);

console.log(max) //5

 

배열안에 배열이 있는 원소들 펼치기

let flattened = [[0,1],[2,3],[4,5]].reduce((acc,cur) => accc.concat(cur). []);

console.log(flattened) //[0,1,2,3,4,5]

 

배열을 오브젝트로 변환하기

let object = ["lion","tiger"].reduce((result, cur) => {
	result[cur] = cur;
    return result;
    }, {}
);

console.log(object); // {lion: "lion", tiger: "tiger"}

배열 요소들의 출현 개수를 세고 오브젝트 형태로 반환

let countedNames = ['A', 'B', 'A', 'A', 'B'].reduce(function (result, cur) { 
  if (cur in result) {
    result[cur]++
  } else {
    result[cur] = 1
  }
  return result
}, {})

console.log(countedNames) // {A: 3, B: 2}

 

오브젝트에서 값이 비어있는 경우 필터링하기

const params = {"hobby":"", "address":"seoul"}
const filteredParams = Object.keys(params).reduce(function (filtered, key) {
      if (params[key] !== "") filtered[key] = params[key];
      return filtered;
    }, {});

console.log('params:', params) // params: {hobby: "", address: "seoul"}
console.log('filteredParams:', filteredParams) // filteredParams: {address: "seoul"}

 

참고: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

'기록' 카테고리의 다른 글

CSS Framework 목록  (0) 2020.12.18
Javascript의 동기와 비동기  (0) 2020.12.07
백엔드 용어 정리  (0) 2020.12.02
웹서버와 WAS  (0) 2020.11.30
meta tag  (0) 2020.11.22