รวมสองอาร์เรย์แล้วลบค่าที่ซ้ำกัน ทิ้งไว้แค่ค่าเดียว (Union of two arrays)
ตัวอย่างโค้ด (ต้นฉบับ)
const arr1 = [2, 4, 5, 3, 7, 8, 9];
const arr2 = [1, 4, 5, 2, 3, 7, 6];
const mergeArrays = (first, second) => {
const res = [];
for (let i = 0; i < first.length + second.length; i++) {
const temp = i >= first.length ? i - first.length : i;
const source = i >= first.length ? first : second;
if (!res.includes(source[temp])) {
res.push(source[temp]);
}
}
return res;
};
console.log(mergeArrays(arr1, arr2));
ผลลัพธ์
[ 1, 4, 5, 2, 3, 7, 6, 8, 9 ]
วิธีแบบสมัยใหม่ (แนะนำ)
// ใช้ Set - เร็วกว่าและสั้นกว่า const mergeArrays = (a, b) => [...new Set([...a, ...b])]; // หรือใช้ filter const mergeArrays2 = (a, b) => a.concat(b).filter((val, i, arr) => arr.indexOf(val) === i);
Set ลบค่าซ้ำอัตโนมัติ และ Spread operator รวมอาร์เรย์ได้สะดวก Complexity O(n) แทน O(n²)