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

JavaScript에서 배열 값 그룹화

<시간/>

다음과 같은 몇 년 및 몇 주 데이터를 포함하는 객체 배열이 있다고 가정합니다. -

상수 arr =[ {연도:2017, 주:45}, {연도:2017, 주:46}, {연도:2017, 주:47}, {연도:2017, 주:48}, {연도:2017, 주:50}, {년:2017, 주:52}, {년:2018, 주:1}, {년:2018, 주:2}, {년:2018, 주:5}]; 

우리는 그러한 배열을 취하는 JavaScript 함수를 작성해야 합니다. 함수는 "연도" 속성에 대해 공통 값을 갖는 모든 개체가 별도의 개체로 그룹화되는 새 배열을 반환해야 합니다.

따라서 위의 배열에 대한 출력 객체는 다음과 같아야 합니다. -

<이전>[ { 2017 :[{ 주:45, 주:46, 주:47, 주:48, 주:50, 주:53 }, { 2018 :[{ 주:1, 주:2, 주:5 }]]

예시

이에 대한 코드는 -

상수 arr =[ {연도:2017, 주:45}, {연도:2017, 주:46}, {연도:2017, 주:47}, {연도:2017, 주:48}, {연도:2017, 주:50}, {년:2017, 주:52}, {년:2018, 주:1}, {년:2018, 주:2}, {년:2018, 주:5}];const groupByYear =arr => { const res =[]; 상수 맵 ={}; arr.forEach(item => { const temp ={}; if (!map[item.year]) { map[item.year] =[]; temp[item.year] =map[item.year]; res .push(temp); }, map[item.year].push({값:item.week }); }); 반환 res;};console.log(JSON.stringify(groupByYear(arr), 정의되지 않음, 4));

출력

콘솔의 출력 -

[ { "2017":[ { "값":45 }, { "값":46 }, { "값":47 }, { "값":48 }, { "값":50 }, { "값":52 } ] }, { "2018":[ { "값":1 }, { "값":2 }, { "값":5 } ] }]