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