Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Xóa phần tử xuất hiện quá n lần bằng JavaScript


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 ]