Vấn đề
Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng số làm đối số đầu tiên và một số làm đối số thứ hai.
Hàm của chúng ta nên xóa các phần tử khỏi mảng để mảng kết quả không chứa phần tử nào xuất hiện nhiều hơn số đã chỉ định (đối số thứ hai).
Ví dụ
Sau đây là mã -
const arr = [4, 2, 3, 2, 4, 2, 2, 4]; const num = 2; const deleteExcess = (arr = [], num = 1) => { const map = {}; for(let i = 0; i < arr.length; i++){ if(!map[arr[i]]){ map[arr[i]] = 1; }else if(map[arr[i]] + 1 <= num){ map[arr[i]]++ }; }; const res = []; Object.keys(map).forEach(key => { for(i = 0; i < map[key]; i++){ res.push(key); }; }); return res.map(Number); }; console.log(deleteExcess(arr, num));
Đầu ra
[ 2, 2, 3, 4, 4 ]