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

Nhóm các mục nhập giống hệt nhau thành các mảng con - JavaScript

Giả sử, chúng ta có một dãy số có các mục nhập giống hệt nhau. Chúng tôi được yêu cầu viết một hàm nhận trong mảng và nhóm tất cả các mục giống nhau thành một mảng con và trả về mảng mới do đó tạo thành.

Ví dụ:Nếu mảng đầu vào là -

const arr = [234, 65, 65, 2, 2, 234];

Sau đó, đầu ra phải là -

const output = [[234, 234], [65, 65], [2, 2]];

Chúng tôi sẽ sử dụng một bản đồ băm để theo dõi các phần tử đã xảy ra và lặp qua mảng bằng vòng lặp for.

Ví dụ

Sau đây là mã -

const arr = [234, 65, 65, 2, 2, 234];
const groupArray = arr => {
   const map = {};
   const group = [];
   for(let i = 0; i < arr.length; i++){
      if(typeof map[arr[i]] === 'number'){
         group[map[arr[i]]].push(arr[i]);
      }else{
         //the push method returns the new length of array
         //and the index of newly pushed element is length-1
         map[arr[i]] = group.push([arr[i]])-1;
      }
   };
   return group;
}
console.log(groupArray(arr));

Đầu ra

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

[ [ 234, 234 ], [ 65, 65 ], [ 2, 2 ] ]