reduce 함수

Sang heon lee·2021년 6월 19일
0

개념 및 기능 정리

목록 보기
1/17

1. 기본 형식

let arr = [1,2,3,4]
arr.reduce(실행함수, 초기값)

arr 배열의 각 인덱스 마다 실행함수를 실시 한다.

2. 배열의 누적값 계산

let arr = [1,2,3,4]
arr.reduce((acc, cur)=> acc+cur , 0) // 10
arr.reduce((acc, cur)=> acc+cur , 10) // 20

function isSum (acc, cur) {
	return acc + cur              // return 이 안들어가면 오류 발생
}

arr.reduce(isSum, 0) // 10

3. 배열의 평탄화 (=flat)

let arr = [[0,1], [2,3], [4,5]]

function isAcc (acc, cur) {
	return acc.concat(cur)              // return 이 안들어가면 오류 발생
}

arr.reduce(isAcc, []) // [0,1,2,3,4,5]
arr.reduce(isAcc) // [0,1,2,3,4,5]

arr.reduce( (acc, cur)=> acc.concat(cur), []) // [0,1,2,3,4,5]
arr.reduce( (acc, cur)=> acc.concat(cur)) // [0,1,2,3,4,5]

flat 메소드로 한번에 처리도 가능

let arr = [[0,1], [2,3], [4,5]]
  
arr.flat() // [0,1,2,3,4,5]

4. 배열 내의 중복 데이터 개수 세기

let names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
  
function countedName (allNames, name) {
  if(name in allNames){
    allNames[name]++
  }else {
    allNames[name] = 1
  }
  return allNames
}

names.reduce(countedName, {})  
// {Alice: 2, Bob: 1, Tiff: 1, Bruce: 1}

5. 배열 내의 중복 데이터 제거

let arr = [1, 2, 1, 2, 3, 5, 4, 5, 3, 4, 4, 4, 4];
let newArr = arr.sort((a,b)=>a-b)

function isFilterArr (acc, cur) {
  if (acc.length === 0 || acc[acc.length-1] !== cur){
	acc.push(cur)
  }
  return acc
}

newArr.reduce(isFilterArr, [])
// [1, 2, 3, 4, 5]
profile
개초보

0개의 댓글