예를 들어, 혼합 데이터 유형을 포함하는 배열을 받아 데이터 유형별로 그룹화된 요소와 함께 Map()을 반환하는 함수 classifyArray()를 작성해야 한다고 가정해 보겠습니다.
예를 들어 -
// if the input array is: const arr = ['class', 2, [7, 8, 9], {"name": "Michael"}, Symbol('foo'), true, false, 'name', 6]; // then the output Map should be: Map(5) { 'string' => [ 'class', 'name' ], 'number' => [ 2, 6 ], 'object' => [ [ 7, 8, 9 ], { name: 'Michael' } ], 'symbol' => [ Symbol(foo) ], 'boolean' => [ true, false ] }
이제 이 함수의 코드를 작성해 보겠습니다 -
예시
const arr = ['class', 2, [7, 8, 9], {"name": "Michael"}, Symbol('foo'), true, false, 'name', 6]; const classifyArray = arr => { return arr.reduce((acc, val) => { const previousData = acc.get(typeof val); if(previousData){ acc.set(typeof val, [...previousData, val]); }else{ acc.set(typeof val, [val]); }; return acc; }, new Map()); }; console.log(classifyArray(arr));
출력
콘솔의 출력은 -
Map(5) { 'string' => [ 'class', 'name' ], 'number' => [ 2, 6 ], 'object' => [ [ 7, 8, 9 ], { name: 'Michael' } ], 'symbol' => [ Symbol(foo) ], 'boolean' => [ true, false ] }