หาสมาชิกที่อยู่ในอาร์เรย์ใดอาร์เรย์หนึ่ง แต่ไม่อยู่ในทั้งสอง (Symmetric Difference)
ตัวอย่าง
arr1 = [12, 54, 2, 4, 6, 34, 3] arr2 = [54, 2, 5, 12, 4, 1, 3, 34] Output: [6, 5, 1] (6 อยู่แค่ arr1, 5 และ 1 อยู่แค่ arr2)
ตัวอย่างโค้ด
const arr1 = [12, 54, 2, 4, 6, 34, 3];
const arr2 = [54, 2, 5, 12, 4, 1, 3, 34];
const difference = (first, second) => {
const res = [];
for (let i = 0; i < first.length; i++) {
if (second.indexOf(first[i]) === -1) res.push(first[i]);
}
for (let j = 0; j < second.length; j++) {
if (first.indexOf(second[j]) === -1) res.push(second[j]);
}
return res;
};
console.log(difference(arr1, arr2));
วิธีทันสมัยกว่า (Set)
const difference = (a, b) => {
const setA = new Set(a), setB = new Set(b);
return [...a.filter(x => !setB.has(x)), ...b.filter(x => !setA.has(x))];
};
ผลลัพธ์
[ 6, 5, 1 ]