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

Kiểm tra phần tử lặp quá n lần trong mảng JavaScript

Mô tả bài toán

Kiểm tra không phần tử nào trong mảng xuất hiện nhiều hơn limit lần. Trả về true nếu hợp lệ, false nếu vi phạm.

Ví dụ minh họa

const arr = [4, 6, 7, 4, 2, 5, 7, 7, 4, 4, 3];

const validateElements = (arr, n) => {
  const counts = arr.reduce((acc, el) => {
    acc[el] = (acc[el] + 1) || 1;
    return acc;
  }, {});
  return Object.values(counts).every(c => c < n);
};

console.log(validateElements(arr, 3)); // false (4 xuất hiện 4 lần)
console.log(validateElements(arr, 4)); // false (4 xuất hiện 4 lần, không < 4)
console.log(validateElements(arr, 6)); // true

Kết quả

false false true

Cách viết ngắn gọn

const validateElements = (arr, n) => 
  Object.values(arr.reduce((a, v) => (a[v] = -~a[v], a), {})).every(c => c < n);

Ứng dụng

Validation dữ liệu, rate limiting, phát hiện spam/bot behavior.