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

Giới hạn số lần xuất hiện phần tử tối đa n lần trong JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một mảng số nguyên arr (có thể chứa trùng lặp) làm đối số thứ nhất, và một số num làm đối số thứ hai. Nhiệm vụ của hàm là lặp qua mảng và kiểm tra xem có phần tử nào xuất hiện nhiều hơn n lần hay không. Nếu có, xóa các lần xuất hiện thừa để giới hạn xuất hiện tối đa num lần.

Ví dụ, nếu đầu vào là:

Đầu vào

const arr = [4, 1, 3, 1, 4, 1, 3, 4, 2];
const num = 2;

Đầu ra

const output = [4, 1, 3, 1, 4, 3, 2];

Giải thích

Cả 4 và 1 đều xuất hiện 3 lần, nên lần xuất hiện thứ 3 bị xóa.

Ví dụ

Dưới đây là mã thực hiện:

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));

Kết quả

[4, 1, 3, 1, 4, 3, 2]