function solution(a, d, included) {
var answer = 0;
for (i=0; i<included.length; i++){
console.log(included[i] && (answer+=a+d*i))
}
return answer;
}
function solution(a, d, included) {
return included.reduce((acc, flag, i) => {
return flag ? acc + a + d * i : acc
}, 0)
}
다른 사람의 풀이를 보니 왜 이생각을 못했을까 싶더라는 ,,
reduce( ) : 배열의 각 요소에 대해 주어진 리듀서 함수를 실행하고, 하나의 결과값을 반환
arr.reduce(callback[, initialValue])
callback 함수는 네개의 인수를 받는다
첫번째 파라미터 : 누산기 (acc)
👉 콜백의 반환값을 누적
initialValue를 제공한 경우 : initialValue 값을 가짐
제공하지 않은 경우 : 배열의 첫번째 값 (index 0)을 가짐
두번째 파라미터 : 현재 값 (cur)
initialValue를 제공한 경우 : 배열의 첫 번째 값
제공하지 않은 경우 : 배열의 두 번째 값
세번째 파라미터 : 현재 인덱스 (idx) (optional)
initialValue를 제공한 경우 : 0부터 시작
제공하지 않은 경우 : 1부터 시작
네번째 파라미터 : 원본 배열 (src) (optional)
initialValue (optional)
👉 callback의 최초 호출에서 첫 번째 인수에 제공하는 값
빈 배열에서 초기값 없이 reduce( )를 호출하면 오류가 발생하니 초기값을 주던지, 빈 배열을 넣지 않던지 해야 한다