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 ]