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

Tách một mảng dựa trên giá trị đầu tiên của nó - 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.

Do đó, đố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 () để tạo mảng được yêu cầu.

Ví dụ

Sau đây là mã -

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

Điều này sẽ tạo ra kết quả sau trong bảng điều khiển -

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