Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 배열의 각 객체에 대해 중복을 병합하고 개수를 늘립니다.

<시간/>

다음과 같은 객체 배열이 있다고 가정해 보겠습니다. -

const arr = [
   {code: "AA", gender:"male", DOB:"2000-05-15"},
   {code: "AA", gender:"female", DOB:"2015-05-15"},
   {code:"A0", gender:"female", DOB:"2005-01-01"},
   {code: "A1", gender:"male", DOB:"2015-01-15"}
];

우리는 그러한 객체 배열 중 하나를 취하는 JavaScript 함수를 작성해야 합니다. 이 함수는 배열의 중복 개체 수를 계산하고(개체의 "code" 속성을 기반으로 함) 각 고유 개체에 새 count 속성을 할당해야 합니다.

함수는 또한 연령("DOB" 및 현재 날짜를 사용하여 계산됨)이 18세 미만인 경우 값이 1이 되는 각 고유 객체에 자식 속성을 할당해야 하고 그렇지 않은 경우 0을 할당해야 합니다.

예시

이에 대한 코드는 -

const arr = [
   {code: "AA", gender:"male", DOB:"2000−05−15"},
   {code: "AA", gender:"female", DOB:"2015−05−15"},
   {code:"A0", gender:"female", DOB:"2005−01−01"},
   {code: "A1", gender:"male", DOB:"2015−01−15"}
];
const groupAndAdd = (arr = []) => {
   const result = new Map();
   let nowYear = new Date().getYear();
   arr.forEach(el => {
      let item = result.get(el.code) || {code: el.code, count: 0, female: 0, child: 0 };
      item.count++;
      item.female += el.gender === "female";
      item.child += nowYear − new Date(Date.parse(el.DOB)).getYear() <18;
      result.set(item.code, item);
   });
   return result;
};
console.log(groupAndAdd(arr));

출력

콘솔의 출력은 -

Map {
   'AA' => { code: 'AA', count: 2, female: 1, child: 1 },
   'A0' => { code: 'A0', count: 1, female: 1, child: 1 },
   'A1' => { code: 'A1', count: 1, female: 0, child: 1 }
}