Computer >> Máy Tính >  >> Lập trình >> Javascript

Xóa các lần xuất hiện của một phần tử nếu nó xuất hiện nhiều hơn n lần bằng JavaScript

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 ]