Giả sử, chúng ta bắt buộc phải viết một hàm ClassArray () đưa vào một mảng chứa các kiểu dữ liệu hỗn hợp và trả về một Map () với các phần tử được nhóm theo kiểu dữ liệu của chúng.
Ví dụ -
// 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 ] }
Bây giờ chúng ta hãy viết mã cho chức năng này -
Ví dụ
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));
Đầu ra
Đầu ra trong bảng điều khiển sẽ là -
Map(5) { 'string' => [ 'class', 'name' ], 'number' => [ 2, 6 ], 'object' => [ [ 7, 8, 9 ], { name: 'Michael' } ], 'symbol' => [ Symbol(foo) ], 'boolean' => [ true, false ] }