Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào một mảng số làm đối số đầu tiên và một số làm đối số thứ hai.
Hàm phải xóa các phần tử khỏi mảng sao cho mảng kết quả không chứa phần tử nào xuất hiện nhiều hơn số lần chỉ định (đối số thứ hai).
Ví dụ
Dưới đâ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));
Kết quả
[ 2, 2, 3, 4, 4 ]