Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 객체 배열에서 평균 나이 계산하기

문제 상황

사람들에 대한 정보를 담고 있는 객체 배열이 주어졌을 때, 이 배열에서 age(나이) 속성의 평균값을 구하는 JavaScript 함수를 작성해야 합니다.

배열의 각 요소는 이름(fName)과 나이(age)를 포함하는 객체이며, 이 중 나이 값들을 모두 더한 뒤 사람 수로 나누어 평균 나이를 계산하면 됩니다.

풀이 방법

가장 효율적인 접근 방식은 reduce() 메서드를 활용하는 것입니다. reduce()를 사용하면 배열을 한 번만 순회하면서 합계(sum)와 개수(count)를 동시에 누적할 수 있습니다. 그런 다음 합계를 개수로 나누어 평균값을 반환합니다.

예제 코드

const people = [
  { fName: 'Ashish', age: 23 },
  { fName: 'Ajay', age: 21 },
  { fName: 'Arvind', age: 26 },
  { fName: 'Mahesh', age: 28 },
  { fName: 'Jay', age: 19 },
];
const findAverageAge = (arr = []) => {
  const { sum, count } = arr.reduce((acc, val) => {
    let { sum, count } = acc;
    sum += val.age;
    count++;
    return { sum, count };
  }, {
    sum: 0, count: 0
  });
  return (sum / (count || 1));
};
console.log(findAverageAge(people));

코드 설명

  • 초기 누적값으로 { sum: 0, count: 0 } 객체를 설정합니다.
  • 각 순회마다 현재 객체의 age 값을 합계에 더하고, 개수를 1씩 증가시킵니다.
  • 최종적으로 합계를 개수로 나누어 평균을 구합니다. 이때 (count || 1)을 사용하면 빈 배열이 들어올 경우 0으로 나누는 오류(NaN)를 방지할 수 있습니다.

출력 결과

23.4

위 예제에서 다섯 명의 나이는 각각 23, 21, 26, 28, 19세입니다. 이들의 합은 117이고, 117 ÷ 5 = 23.4이므로 평균 나이는 23.4세로 정상적으로 출력됩니다.