ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของสตริง arr เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียว
ฟังก์ชันของเราควรจะส่งคืนอาร์เรย์ของอักขระทั้งหมดที่ปรากฏในสตริงทั้งหมดภายในอาร์เรย์ arr (รวมถึงรายการที่ซ้ำกัน) .
ตัวอย่างเช่น หากอักขระเกิดขึ้น 2 ครั้งในสตริงทั้งหมด แต่ไม่ใช่ 3 ครั้ง เราจำเป็นต้องรวมอักขระนั้น 2 ครั้งในคำตอบสุดท้าย
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −
const arr = ['door', 'floor', 'crook'];
จากนั้นผลลัพธ์ควรเป็น −
const output = ['r', 'o', 'o'];
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const arr = ['door', 'floor', 'crook']; const findCommon = (arr = []) => { let prev = null; arr.forEach((str) => { const next = {}; for(const val of str){ if(!prev){ next[val] = (next[val] || 0) + 1; }else if(prev[val]){ prev[val] -= 1; next[val] = (next[val] || 0) + 1; }; }; prev = next; }); const res = Object.keys(prev).reduce((acc, val) => { for(let i = 0; i < prev[val]; i++){ acc.push(val); } return acc }, []); return res; }; console.log(findCommon(arr));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
[ 'r', 'o', 'o' ]