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

การเปรียบเทียบอิลิเมนต์ของอาร์เรย์พร้อมการนับจำนวนใน JavaScript


ภาพรวม

สมมติว่าเรามีอาร์เรย์สองอาร์เรย์ที่มีจำนวนอิลิเมนต์เท่ากัน เราต้องเขียนฟังก์ชันตรวจสอบว่าทั้งสองอาร์เรย์มีอิลิเมนต์เหมือนกันและปรากฏจำนวนครั้งเท่ากันหรือไม่

หากเงื่อนไขเป็นจริง ให้คืนค่า true มิฉะนั้นคืนค่า false

วิธีการแก้ปัญหา

สร้างสำเนาของอาร์เรย์ที่สอง แล้ววนลูปผ่านอาร์เรย์แรก ขณะวนลูป ให้ลบอิลิเมนต์ที่พบในอาร์เรย์แรกออกจากสำเนาอาร์เรย์ที่สอง หากพบอิลิเมนต์ที่ไม่มีในอาร์เรย์ที่สอง ให้คืนค่า false ทันที หากวนลูปจบสมบูรณ์ ให้คืนค่า true

ตัวอย่างโค้ด

const arr1 = [2, 5, 7, 4, 3, 3];
const arr2 = [3, 5, 7, 2, 3, 4];

const compareWithCount = (arr1, arr2) => {
  if(arr1.length !== arr2.length) {
    return false;
  }
  const copy2 = arr2.slice();
  const areEqual = arr1.every(el => {
    if(!copy2.includes(el)) {
      return false;
    }
    copy2.splice(copy2.indexOf(el), 1);
    return true;
  });
  return areEqual;
};

console.log(compareWithCount(arr1, arr2));

ผลลัพธ์ในคอนโซล

true