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

Nhóm mảng của mảng trên cơ sở các phần tử trong JavaScript

Giả sử, chúng ta có một mảng các dãy số như thế này -

const arr = [[1, 45], [1, 34], [1, 49], [2, 34], [4, 78], [2, 67], [4, 65]];

Mỗi mảng con được ràng buộc phải chứa đúng hai phần tử. Chúng tôi được yêu cầu viết một hàm tạo một mảng mới trong đó tất cả các phần tử thứ hai của các mảng con có giá trị đầu tiên giống nhau được nhóm lại với nhau.

Vì vậy, đối với mảng ở trên, đầu ra sẽ giống như -

const output = [
   [45, 34, 49],
   [34, 67],
   [78, 65]
];

Chúng ta có thể sử dụng phương thức Array.prototype.reduce () nhờ sự trợ giúp của Map () để cấu trúc mảng được yêu cầu.

Do đó, hãy viết mã cho chức năng này -

Ví dụ

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

const arr = [[1, 45], [1, 34], [1, 49], [2, 34], [4, 78], [2, 67], [4, 65]];
const constructSimilarArray = (arr = []) => {
   const creds = arr.reduce((acc, val) => {
      const { map, res } = acc;
      if(!map.has(val[0])){
         map.set(val[0], res.push([val[1]]) - 1);
      }else{
         res[map.get(val[0])].push(val[1]);
      };
      return { map, res };
   }, {
      map: new Map(),
      res: []
   });
   return creds.res;
};
console.log(constructSimilarArray(arr));

Đầu ra

Đầu ra trong bảng điều khiển sẽ là -

[ [ 45, 34, 49 ], [ 34, 67 ], [ 78, 65 ] ]