자바스크립트 배열의 요소를 특정 기준으로 그룹핑 및 정렬 후 추출하기

자바스크립트에서는 배열의 요소를 특정 기준으로 그룹핑하고 정렬한 후에 필요한 요소를 추출할 수 있습니다. 이를 통해 데이터를 구조화하고 원하는 정보를 쉽게 가져올 수 있습니다.

다음은 자바스크립트에서 배열의 요소를 특정 기준으로 그룹핑하고 정렬한 후에 추출하는 방법에 대한 예제 코드입니다.

// 예제 배열
const users = [
  { id: 1, name: 'John', age: 32 },
  { id: 2, name: 'Jane', age: 28 },
  { id: 3, name: 'James', age: 45 },
  { id: 4, name: 'Jessica', age: 27 },
  { id: 5, name: 'Jerry', age: 35 },
];

// 특정 기준으로 그룹핑하기
const groupedUsers = {};
users.forEach(user => {
  const ageGroup = Math.floor((user.age - 1) / 10) * 10; // 10의 배수 단위로 그룹핑
  if (!groupedUsers[ageGroup]) {
    groupedUsers[ageGroup] = [];
  }
  groupedUsers[ageGroup].push(user);
});

// 그룹핑된 결과 출력
console.log(groupedUsers);

// 그룹별로 정렬하고 추출하기
const sortedUsers = [];
for (const ageGroup in groupedUsers) {
  sortedUsers.push(...groupedUsers[ageGroup].sort((a, b) => a.name.localeCompare(b.name)));
}

// 정렬된 결과 출력
console.log(sortedUsers);

// 원하는 요소 추출하기
const extractedUsers = sortedUsers.filter(user => user.age >= 30);

// 추출된 결과 출력
console.log(extractedUsers);

위의 예제 코드는 users 배열을 나이(age)를 기준으로 그룹핑하고, 각 그룹에서 이름(name)을 기준으로 정렬한 후에 30세 이상인 사용자를 추출하는 과정을 보여줍니다.

먼저 forEach 메소드를 사용하여 users 배열의 요소를 순회하면서, 나이를 그룹핑하기 위해 ageGroup 변수를 계산하고 그룹 별로 groupedUsers 객체에 요소를 추가합니다.

그 다음, for...in 문을 사용하여 groupedUsers 객체를 순회하면서 그룹별로 이름을 기준으로 정렬한 후에 sortedUsers 배열에 요소를 추가합니다.

마지막으로 filter 메소드를 사용하여 sortedUsers 배열에서 30세 이상인 사용자를 추출하여 extractedUsers 배열에 저장합니다.

콘솔에는 그룹핑된 결과, 정렬된 결과, 그리고 추출된 결과가 출력됩니다.

이와 같이 자바스크립트에서 배열의 요소를 그룹핑하고 정렬한 후에 원하는 정보를 추출할 수 있습니다. 이러한 기능을 적절히 활용하면 데이터를 효과적으로 처리하고 분석하는 데 도움이 됩니다.