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

Đếm nhóm số âm liên tiếp trong mảng - JavaScript

Cho một mảng số, viết hàm đếm số nhóm các số âm liên tiếp. Một nhóm được định nghĩa là dãy các số âm liên tiếp nhau, bị ngăn cách bởi số không âm (>= 0).

Ví dụ

const arr = [-1, -2, -1, 0, -1, -2, -1, -2, -1, 0, 1, 0];
// Nhóm 1: index 0-2 (-1, -2, -1)
// Nhóm 2: index 4-8 (-1, -2, -1, -2, -1)
// Kết quả: 2

Giải pháp

Duyệt mảng, tăng bộ đếm khi gặp số âm và phần tử tiếp theo là không âm (hoặc hết mảng).

const arr = [-1, -2, -1, 0, -1, -2, -1, -2, -1, 0, 1, 0];

const countNegativeGroup = arr => {
  return arr.reduce((acc, val, ind) => {
    // Nếu giá trị hiện tại âm VÀ (phần tử tiếp theo không âm HOẶC là phần tử cuối)
    if (val < 0 && (ind === arr.length - 1 || arr[ind + 1] >= 0)) {
      acc++;
    }
    return acc;
  }, 0);
};

console.log(countNegativeGroup(arr));

Kết quả

2

Lưu ý: Điều kiện ind === arr.length - 1 xử lý trường hợp mảng kết thúc bằng số âm.