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 |