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

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

จัดกลุ่มเอลีเมนต์ที่เหมือนกันในอาร์เรย์ ให้อยู่ใน Sub-array เดียวกัน (Group Identical Elements)

ตัวอย่าง

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

ตัวอย่างโค้ด

const groupArray = arr => {
  const map = {};
  const groups = [];
  
  for (const val of arr) {
    if (typeof map[val] === 'number') {
      groups[map[val]].push(val);
    } else {
      map[val] = groups.push([val]) - 1;
    }
  }
  return groups;
};

console.log(groupArray([234, 65, 65, 2, 2, 234]));

ผลลัพธ์

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

วิธีแบบ Reduce + Map (Functional)

const groupArray = arr => 
  [...arr.reduce((map, val) => {
    map.set(val, [...(map.get(val) || []), val]);
    return map;
  }, new Map()).values()];

ใช้ Map เก็บอาร์เรย์ของแต่ละค่า แล้วดึง .values() ออกมา