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

JavaScript의 Groups를 기반으로 새 배열을 만드는 배열 그룹화 및 항목 계산

<시간/>

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

const arr =[ { 지역:"아프리카", 과일:"오렌지", 사용자:"게리" }, { 지역:"아프리카", 과일:"애플", 사용자:"스티브" }, { 지역:"유럽", 과일:"오렌지", 사용자:"존" }, { 지역:"유럽", 과일:"애플", 사용자:"밥" }, { 지역:"아시아", 과일:"오렌지", 사용자:"Ian" }, { 지역:"아시아", 과일:"Apple", 사용자:"Angelo" }, { 지역:"아프리카", 과일:"Orange", 사용자:"Gary" }]; 

우리는 그러한 배열을 취하는 JavaScript 함수를 작성해야 합니다. 함수는 개체의 "영역" 속성을 기반으로 데이터를 그룹화하는 개체의 새 배열을 준비해야 합니다.

이 기능은 또한 특정 영역의 고유 사용자 수를 유지해야 합니다.

따라서 위의 배열의 경우 출력은 다음과 같아야 합니다. -

const output =[ { "region":"Africa", "count":2 }, { "region":"Europe", "count":2 }, { "region":"Asia", "count ":2 }];

예시

이에 대한 코드는 -

const arr =[ { 지역:"아프리카", 과일:"오렌지", 사용자:"게리" }, { 지역:"아프리카", 과일:"애플", 사용자:"스티브" }, { 지역:"유럽", 과일:"오렌지", 사용자:"존" }, { 지역:"유럽", 과일:"애플", 사용자:"밥" }, { 지역:"아시아", 과일:"오렌지", user:"Ian" }, { 지역:"Asia", 과일:"Apple", 사용자:"Angelo" }, { 지역:"Africa", 과일:"Orange", 사용자:"Gary" }];const groupByArea =(arr =[]) => { const res =[]; arr.forEach(el => { 키 =[el.region, el.user].join('|'); if (!this[el.region]) { this[el.region] ={ 지역:엘 .region, count:0 }; res.push(this[el.region]); }; if (!this[key]) { this[key] =true; this[el.region].count++; }; } , Object.create(null)); 반환 res;}console.log(groupByArea(arr));

출력

콘솔의 출력은 -

[ { 지역:'아프리카', 개수:2 }, { 지역:'유럽', 개수:2 }, { 지역:'아시아', 개수:2 }]