จัดเรียงอาร์เรย์ให้เลขคู่อยู่หน้า (เรียงน้อยไปมาก) ตามด้วยเลขคี่ (เรียงน้อยไปมาก)
ตัวอย่าง
// Input: [2, 5, 2, 6, 7, 1, 8, 9] // Output: [2, 2, 6, 8, 1, 5, 7, 9]
ตัวอย่างโค้ด
const arr = [2, 5, 2, 6, 7, 1, 8, 9];
const isEven = num => num % 2 === 0;
const sorter = (a, b) => {
// คู่มาก่อนคี่
if (isEven(a) && !isEven(b)) return -1;
if (!isEven(a) && isEven(b)) return 1;
// เหมือนกัน (คู่-คู่ หรือ คี่-คี่) เรียงน้อยไปมาก
return a - b;
};
const oddEvenSort = arr => arr.sort(sorter);
oddEvenSort(arr);
console.log(arr);
หลักการ Comparator Function
- คืนค่าติดลบ: a มาก่อน b
- คืนค่าบวก: b มาก่อน a
- คืน 0: คงลำดับเดิม
ผลลัพธ์
[ 2, 2, 6, 8, 1, 5, 7, 9 ]
ประยุกต์ใช้: การจัดกลุ่มข้อมูล การแสดงผลรายงาน การเตรียมข้อมูลสำหรับอัลกอริทึมอื่น