Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Nhóm mảng mảng dựa trên phần tử trong JavaScript

Nhóm mảng mảng dựa trên phần tử trong JavaScript

Giả sử, chúng ta có một mảng các mảng số như sau:

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

Mỗi mảng con bắt buộc chứa chính xác hai phần tử. Chúng ta cần viết một hàm xây dựng một mảng mới nơi tất cả các phần tử thứ hai của các mảng con có giá trị thứ nhất tương tự được nhóm lại với nhau.

Vì vậy, với mảng trên, kết quả đầu ra nên trô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() với sự trợ giúp của Map() để xây dựng mảng yêu cầu.

Do đó, hãy viết mã cho hàm này:

Ví dụ

Mã thực hiện như sau:

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

Kết quả trong console sẽ là:

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