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

กรองอาร์เรย์ด้วยอาร์เรย์อีกอัน (Filter Array by Another Array) - JavaScript

กรองอาร์เรย์แรก ให้เหลือเฉพาะค่าที่ ไม่อยู่ ในอาร์เรย์ที่สอง (Difference / Exclusion)

ตัวอย่าง

arr1 = [4, 23, 7, 6, 3, 6, 4, 3, 56, 4]
arr2 = [4, 56, 23]
Result: [7, 6, 3, 6, 3]

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

const filterArray = (arr1, arr2) => 
  arr1.filter(el => !arr2.includes(el));

console.log(filterArray(
  [4, 23, 7, 6, 3, 6, 4, 3, 56, 4],
  [4, 56, 23]
));

ผลลัพธ์

[ 7, 6, 3, 6, 3 ]

Optimization สำหรับ Array ใหญ่

const filterArray = (arr1, arr2) => {
  const exclude = new Set(arr2); // O(1) lookup
  return arr1.filter(el => !exclude.has(el));
};

แปลง arr2 เป็น Set ก่อน ทำให้ includes (O(n)) กลายเป็น has (O(1))

Overall: O(n+m) แทน O(n×m)