Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การจัดกลุ่มสมาชิกที่เหมือนกันในอาร์เรย์ - JavaScript

จัดกลุ่มสมาชิกที่เหมือนกันในอาร์เรย์เป็น 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 index
  • group.push([val]) - 1 ได้ index ของ subarray ใหม่
  • เจอซ้ำ → push เข้า subarray ที่ map ชี้

ผลลัพธ์

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