why?

Javascript_Question(2): reduce함수

Ama_grammer 2023. 6. 26. 16:23

const friends = [
   {
       name: '양주진',
       age: 32,
       job: '코인러',
       married: false,
   },
   {
       name: '오영제',
       age: 32,
       job: '랩퍼',
       married: false,
   },
   {
      name: '서준형',
      age: 32,
      job: '2년차 유부남',
      married: true,
   }
]; // 3명의 나이를 더해봅니다.
// 여기서 초기값 설정이 반드시 필요합니다.
const ageSum = friends.reduce((accumulator, currentObject) => {
   return accumulator + currentObject.age;
}, 0);
console.log('친구들 나이 합 ', ageSum);

나이의 합을 구할때 currentObject는 .age를 붙였는데 accumulator 는 붙이지 않았는데 어떻게 

friends 의 age에 바로 접근이 가능한건지 이해가 가지 않는다.

 

accumulator

currentObject.age

 

*** 해결 ***

 

reduce 함수의 구조를 보면

arr.reduce((acc,cur) => acc + cur, 0);


이런 형태를 보이고 있는데 여기서 봤어야 하는 것은 'cur,' 뒤에 있는 0이다.

저 자리는 acc 의 default 값을 정하는 자리로 저 부분에 0을 할당하는 것으로 초깃값이 정해진다.

 

reduce 함수 동작에 따른 값 변화

1. acc 의 초깃값은 0으로 할당
2. acc = acc + cur.age;

acc (acc += cur) cur.age (=friends)
0 32 friends[0].age
32 32 friends[1].age
64 32 friends[2].age
92    

'why?' 카테고리의 다른 글

Javascript_Question(1) : 함수의 출력  (1) 2023.06.22