จัดกลุ่มสมาชิกที่เหมือนกันในอาร์เรย์เป็น subarrays ตามลำดับที่ปรากฏครั้งแรก
ตัวอย่าง
Input: [234, 65, 65, 2, 2, 234] Output: [[234, 234], [65, 65], [2, 2]]
ตัวอย่างโค้ด
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') {
// เจอแล้ว push เข้า subarray เดิม
group[map[arr[i]]].push(arr[i]);
} else {
// เจอครั้งแรก สร้าง subarray ใหม่
map[arr[i]] = group.push([arr[i]]) - 1;
}
}
return group;
};
console.log(groupArray(arr));
การทำงาน
mapเก็บvalue -> group indexgroup.push([val]) - 1ได้ index ของ subarray ใหม่- เจอซ้ำ → push เข้า subarray ที่ map ชี้
ผลลัพธ์
[ [ 234, 234 ], [ 65, 65 ], [ 2, 2 ] ]