เราจำเป็นต้องเขียนฟังก์ชันโดยพูดว่า isEqual() ซึ่งรับสองสตริงเป็นอาร์กิวเมนต์ และตรวจสอบว่าทั้งคู่มีอักขระเดียวกันโดยไม่ขึ้นกับลำดับและตัวพิมพ์หรือไม่
ตัวอย่างเช่น −
const first = 'Aavsg'; const second = 'VSAAg'; isEqual(first, second); //true
วิธีการ:1 การใช้อาร์เรย์
ในวิธีนี้ เราจะแปลงสตริงเป็นอาร์เรย์ ใช้เมธอด Array.prototype.sort() แปลงกลับเป็นสตริง และตรวจสอบความเท่าเทียมกัน
รหัสสำหรับสิ่งนี้จะเป็น −
ตัวอย่าง
const first = 'Aavsg'; const second = 'VSAAg'; const stringSort = function(){ return this.split("").sort().join(""); } String.prototype.sort = stringSort; const isEqual = (first, second) => first.toLowerCase().sort() === second.toLowerCase().sort(); console.log(isEqual(first, second));
วิธีที่ 2:การใช้แผนที่
ในวิธีนี้เราวนซ้ำทั้งสองสตริงพร้อมกัน เก็บความถี่อักขระใน amap ด้วยค่าเช่นนี้ -
-1, if it appears in the first string, +1, if it appears in the second string,
สุดท้าย หากคีย์ทั้งหมดรวมกันเป็น 0 เราก็สรุปได้ว่าสตริงนั้นไม่เหมือนกัน
รหัสสำหรับสิ่งนี้จะเป็น −
ตัวอย่าง
const first = 'Aavsg'; const second = 'VSAAg'; const isEqual = (first, second) => { if(first.length !== second.length){ return false; } first = first.toLowerCase(); second = second.toLowerCase(); const map = {}; for(ind in first){ if(map[first[ind]]){ map[first[ind]]++; }else{ map[first[ind]] = 1; } if(map[second[ind]]){ map[second[ind]]--; }else{ map[second[ind]] = -1; } }; return Object.values(map).reduce((acc, val) => val === 0 && acc, true); }; console.log(isEqual(first, second));
ผลลัพธ์
ผลลัพธ์ในคอนโซลสำหรับทั้งคู่จะเป็น −
true