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

การหาความต่างระหว่างสองอาร์เรย์ - JavaScript

หาสมาชิกที่อยู่ในอาร์เรย์ใดอาร์เรย์หนึ่ง แต่ไม่อยู่ในทั้งสอง (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 ]