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

Nhóm các phần tử giống nhau thành mảng con - JavaScript

Viết hàm nhóm các phần tử giống nhau trong mảng thành các mảng con.

Ví dụ

Đầu vào: [234, 65, 65, 2, 2, 234]

Kết quả: [[234, 234], [65, 65], [2, 2]]

Giải pháp

Mã triển khai dùng object theo dõi:

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

const groupArray = arr => {
  const map = {};
  const groups = [];
  
  for (const val of arr) {
    if (map.hasOwnProperty(val)) {
      groups[map[val]].push(val);
    } else {
      map[val] = groups.push([val]) - 1; // Index của group mới
    }
  }
  return groups;
};

console.log(groupArray(arr));

Kết quả

Đầu ra trong console:

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

Cách ngắn gọn: Object.values(arr.reduce((a,v)=>(a[v]=a[v]||[]).push(v)&&a,{}))