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

รวมสองอาร์เรย์ ลบค่าซ้ำทิ้งทีละค่า - JavaScript

รวมสองอาร์เรย์แล้วลบค่าที่ซ้ำกัน ทิ้งไว้แค่ค่าเดียว (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²)