[javascript] 객체의 속성 값을 기준으로 최대값 찾기

자바스크립트에서 객체의 속성 값을 기준으로 최대값을 찾는 방법을 알아보겠습니다.

객체의 구조

아래와 같은 구조를 갖는 객체를 예시로 사용하겠습니다.

const students = {
  student1: { name: "John", age: 20 },
  student2: { name: "Jane", age: 22 },
  student3: { name: "Mike", age: 18 },
  student4: { name: "Sarah", age: 21 },
};

이 객체는 각각의 학생을 나타내며, 이름과 나이라는 속성을 갖고 있습니다.

최대값 찾기

자바스크립트의 Object.keys() 메소드와 Array.reduce() 메소드를 활용하여 객체의 속성 값을 기준으로 최대값을 찾을 수 있습니다.

다음은 위에서 정의한 students 객체의 나이 속성을 기준으로 최대 나이를 찾는 코드입니다.

const maxAge = Object.keys(students).reduce((max, key) => {
  const student = students[key];
  if (student.age > max) {
    return student.age;
  }
  return max;
}, -Infinity);

console.log(maxAge); // 출력: 22

위 코드에서 Object.keys(students)students 객체의 속성 이름들을 배열로 반환합니다. 그리고 reduce() 메소드를 사용하여 배열의 각 요소를 순회하면서 최대값을 찾습니다. 초기값으로 -Infinity를 설정하여 비교할 때 이보다 작은 값이 나올 수 있도록 합니다.

reduce() 메소드의 콜백 함수에서는 각 학생(student)의 나이를 최대값(max)과 비교하여 더 큰 값을 반환합니다. 최대값이 갱신될 때마다 새로운 최대값으로 설정됩니다.

결과

위 코드를 실행하면 22가 출력되며, 이는 students 객체 중 가장 나이가 많은 학생의 나이입니다.

참고 자료