Print a multiple of 3 or a multiple of 5 less than 1000
// for문으로 구현해 보았다.
let sum = 0;
for(let i=1; i<1000; i+=1) {
if (i % 3 === 0 || i % 5 === 0) {
sum += i;
}
}
// 이제 reduce로 변환해야 한다.
// reduce함수를 쓰려면 배열이어야 가능하다.
// 빈배열에 for문 push 메소드를 이용해, 만들어야겠다
let array = [];
for(let i=1; i<1000; i++){
array.push(i);
}
let sum = array.reduce(function(acc,val){
if(val%3===0 || val%5===0){
return acc+val;
}
});
//NaN
//될리가 없다.. reduce 함수의 accumulator 와 currentValue 의 형태를 조사했다.
//디버깅 해보니, 2번째 누적값이 undefined가 되며 3번째 누적값은 당연히 NaN이 되었다.
//undefined가 안나오게 할 수 있는 방법을 찾아봐야 한다.
let sum = array.reduce(function(acc,val){
if(acc%3===0 || val%3===0){
return acc=acc+val;
}
return acc;
});
//acc = acc + val; 을 만들려고 한 3시간을 출력값을 바꿔가며 적어봤다..
//일단 for문을 reduce함수로 제대로 변환해본 처음 문제인 것 같다.
//다른 문제들은 없나 찾아보고, 더 풀어봐야 reduce를 배웠다고 할 수 있을 것 같다.