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

การจำกัดองค์ประกอบที่เกิดขึ้นเป็น n ครั้งใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็ม arr ที่อาจซ้ำซ้อนเป็นอาร์กิวเมนต์แรก และตัวเลข num เป็นอาร์กิวเมนต์ที่สองและสุดท้าย

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

หากมีองค์ประกอบดังกล่าวอยู่ เราควรลบการเกิดขึ้นเพิ่มเติมเพื่อจำกัดการเกิดขึ้นขององค์ประกอบดังกล่าวให้มากที่สุด num

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −

ป้อนข้อมูล

const arr = [4, 1, 3, 1, 4, 1, 3, 4, 2];
const num = 2;

ผลผลิต

const output = [4, 1, 3, 1, 4, 3, 2];

คำอธิบายผลลัพธ์

ทั้ง 4 และ 1 ปรากฏตัวสามครั้ง ดังนั้นการปรากฏตัวครั้งที่สามจึงถูกลบ

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

const arr = [4, 1, 3, 1, 4, 1, 3, 4, 2];
const num = 2;
const deleteExtra = (arr = [], num = 1) => {
   if(num === 0){
      return [];
   };
   const res = [];
   const map = {};
   for(let i = 0; i < arr.length; i++){
      const el = arr[i];
      map[el] = (map[el] || 0) + 1;
      if(map[el] <= num){
         res.push(el);
      };
   };
   return res;
};
console.log(deleteExtra(arr, num));

ผลลัพธ์

[ 4, 1, 3, 1, 4, 3, 2 ]