https://school.programmers.co.kr/learn/courses/30/lessons/12944

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 설명

정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.

제한사항

  • arr은 길이 1 이상, 100 이하인 배열입니다.
  • arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.

입출력 예

arrreturn
[1,2,3,4] 2.5
[5,5] 5

 

 

function solution(arr) {
    let sum = 0
    
    arr.forEach(n => {
        sum += n    
    })
    
    return sum / arr.length;
}

 

reduce 사용하기

acc는 누적값, cur는 현재값

function solution(arr) {
    let answer = arr.reduce((acc, cur) => acc + cur) / arr.length 
    return answer;
}

 

reduce 사용법

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

let oneTwoThree = [1, 2, 3]

let temp = oneTwoThree.reduce((acc, cur, i) => {
    console.log("누적 값",acc, "현재값",cur, "인덱스",i)
    return acc + cur
}, 0)

console.log("결과", temp)

//누적 값 0 현재값 1 인덱스 0
//누적 값 1 현재값 2 인덱스 1
//누적 값 3 현재값 3 인덱스 2
//결과 6

 

//초기값을 적어주지 않으면 초기값은 0번째 인덱스의 값이다.

let temp = oneTwoThree.reduce((acc, cur, i) => {
    console.log("누적 값",acc, "현재값",cur, "인덱스",i)
    return acc + cur
})

console.log("결과", temp)

//누적 값 1 현재값 2 인덱스 1
//누적 값 3 현재값 3 인덱스 2
//결과 6

 

reduce로 배열에 push 해서 새로운 배열 만들기(map 이랑 동일한 기능)

let result = oneTwoThree.reduce((acc, cur) => {
    acc.push(cur % 2 ? '홀수' : '짝수');
    console.log("acc >", acc)
    return acc;
}, []);

console.log("결과", result)


//acc > [ '홀수' ]
//acc > [ '홀수', '짝수' ]
//acc > [ '홀수', '짝수', '홀수' ]
//결과 [ '홀수', '짝수', '홀수' ]

 

 

let result = oneTwoThree.reduce((acc, cur) => {
    if (cur % 2) acc.push(cur)
    console.log(acc)
    return acc
}, []);

console.log("결과", result)

//acc > [ 1 ]
//acc > [ 1 ]
//acc > [ 1, 3 ]
//결과 [ 1, 3 ]
[자바스크립트 | 프로그래머스 1단계] 평균구하기