Computer >> Máy Tính >  >> Lập trình >> Javascript

Làm cách nào để viết một hàm nhận một mảng giá trị và trả về một đối tượng JavaScript?

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 ]
}