Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การหาจุดตัดของอาร์เรย์ที่มีรายการที่ซ้ำกันใน JavaScript


เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้ตัวเลขสองอาร์เรย์ ให้เรียกว่า arr1 และ arr2

ฟังก์ชันควรสร้างอาร์เรย์ที่สามโดยยึดตามอาร์เรย์อินพุต 2 ชุดที่มีองค์ประกอบทั้งหมดที่เหมือนกันกับทั้ง arr1 และ arr2

โปรดทราบว่าหากมีองค์ประกอบเดียวกันมากกว่าหนึ่งรายการในอาร์เรย์ทั้งสอง เราต้องพิจารณาอินสแตนซ์ดังกล่าวทั้งหมดขององค์ประกอบนั้น

ตัวอย่างเช่น −

หากอาร์เรย์อินพุตเป็น −

const arr1 = [1, 2, 2, 4, 4, 5, 6];
const arr2 = [3, 2, 4, 2, 4, 9];

จากนั้นอาร์เรย์เอาต์พุตควรเป็น −

const output = [2, 2, 4, 4];

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

const arr1 = [1, 2, 2, 4, 4, 5, 6];
const arr2 = [3, 2, 4, 2, 4, 9];
const findIntersection = (arr1 = [], arr2 = []) => {
   const map = new Map();
   for (const el of arr2) {
      const count = map.get(el) || 0;
      map.set(el, count + 1);
   };
   return arr1.filter(el => {
      let count = map.get(el);
      if (count) {
         map.set(el, --count);
         return true;
      }
      return false;
   });
};
console.log(findIntersection(arr1, arr2));

ผลลัพธ์

ต่อไปนี้เป็นเอาต์พุตคอนโซล -

[2, 2, 4, 4]