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

Nhóm và sắp xếp mảng 2-D trong JavaScript

Giả sử chúng ta có một mảng số hai chiều như thế này -

const arr = [
   [1, 3, 2],
   [5, 2, 1, 4],
   [2, 1]
];

Chúng tôi bắt buộc phải viết một hàm JavaScript để nhóm tất cả các số giống nhau thành một mảng con riêng biệt của chúng và sau đó hàm sẽ sắp xếp mảng nhóm để đặt các mảng con theo thứ tự tăng dần.

Do đó, cuối cùng mảng mới sẽ trông giống như -

const output = [
   [1, 1, 1],
   [2, 2, 2],
   [4], [3],
   [5]
];

Ví dụ

Mã cho điều này sẽ là -

const arr = [
   [1, 3, 2],
   [5, 2, 1, 4],
   [2, 1]
];
const groupAndSort = arr => {
   const res = [];
   const map = Object.create(null);
   Array.prototype.forEach.call(arr, item => {
      item.forEach(el => {
         if (!(el in map)) {
            map[el] = [];
            res.push(map[el]);
         };
         map[el].push(el);
      });
   });
   res.sort((a, b) => {
      return a[0] - b[0];
   });
   return res;
};
console.log(groupAndSort(arr));

Đầu ra

Đầu ra trong bảng điều khiển -

[ [ 1, 1, 1 ], [ 2, 2, 2 ], [ 3 ], [ 4 ], [ 5 ] ]