สมมติว่า เรามีอาร์เรย์ของตัวอักษรสองอาร์เรย์ที่มีจำนวนองค์ประกอบเท่ากัน เราควรเขียนฟังก์ชันที่ตรวจสอบว่าอาร์เรย์ทั้งสองมีองค์ประกอบเดียวกันปรากฏขึ้นในจำนวนครั้งที่เท่ากันหรือไม่
หากอาร์เรย์เป็นไปตามเงื่อนไขนี้ เราจะคืนค่า จริง เท็จ มิฉะนั้น
เราจะสร้างสำเนาของอาร์เรย์ที่สอง และเริ่มการวนซ้ำในอาร์เรย์แรก ขณะที่เราทำซ้ำ เราจะทำการลบองค์ประกอบออกจากอาร์เรย์ที่สองที่มีอยู่ในอาร์เรย์แรก หากในระหว่างการวนซ้ำเราพบองค์ประกอบใด ๆ ที่ไม่มีอยู่ในอาร์เรย์ที่สอง เราจะคืนค่าเท็จ มิฉะนั้น เมื่อสิ้นสุดการวนซ้ำ เราจะคืนค่าเป็น จริง
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
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