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,{}))