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

คอมมอนส์รวมถึงรายการที่ซ้ำกันในองค์ประกอบอาร์เรย์ใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน 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' ]