JavaScript - reduce함수

김민섭·2022년 9월 24일
0
post-thumbnail

코딩테스트 연습문제를 풀던 중에 몰랐던 함수를 알게 되어 정리해 봅니다.


내가 풀었던 방식
1. 0 부터 9 까지의 숫자를 담고있는 배열 arr1을 만든다.
2. arr1과 파라미터로 받는 numbers의 차집합을 구한다.
3. 차집합끼리 더한다.

function solution(numbers) {
    const arr1 = []     // 빈 배열 arr1을 만든다.
    for (let i=0; i<10; i++) {  // for문을 통해서 0~9까지의 숫자를 arr1에 담는다.
        arr1.push(i)
    }
    let different = arr1.filter(x => !numbers.includes(x))  // arr1과 numbers의 차집합을 구한다.
}

차집합까지는 구했는데 차집합끼리 더하는 방법을 몰라서 풀지를 못하고 있었다.

구글링을 하던 와중에 reduce라는 함수가 있어서 사용해 봤다.

.reduce

  • 사용방법
배열.reduce((누적값, 현잿값, 인덱스, 요소) => { return 결과 }, 초깃값);

배열에 값을 누적하는 목적으로 사용하는 함수인 것 같은데
나에게 유용하게 쓰일 듯 싶었다.

function solution(numbers) {
    const arr1 = []     // 빈 배열 arr1을 만든다.
    for (let i=0; i<10; i++) {  // for문을 통해서 0~9까지의 숫자를 arr1에 담는다.
        arr1.push(i)
    }
    let different = arr1.filter(x => !numbers.includes(x))  // arr1과 numbers의 차집합을 구한다.
}

diffrent값들의 합을 구하려 했으니

different.reduce((acc, cur) => acc+cur,0)

이것을 result 값으로 넣어서 return!
결과는 정상적으로 작동했다

function solution(numbers) {
    const arr1 = []     // 빈 배열 arr1을 만든다.
    for (let i=0; i<10; i++) {  // for문을 통해서 0~9까지의 숫자를 arr1에 담는다.
        arr1.push(i)
    }
    let different = arr1.filter(x => !numbers.includes(x))  // arr1과 numbers의 차집합을 구한다.
    const result = different.reduce((acc, cur) => acc+cur,0)
    return result
}

#코딩테스트 왜 이렇게 어려운거야...연습문제라며..난이도 下下라면서요....

profile
getting ready to run

0개의 댓글