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

Lặp lại thông qua một mảng, thêm các lần xuất hiện của một true trong JavaScript

Giả sử chúng ta có một mảng true / false được biểu diễn bằng 't' / 'f' mà chúng ta lấy từ một số cơ sở dữ liệu như thế này -

const arr = ['f', 't', 'f', 't', 't', 't', 'f', 'f', 't', 't', 't', 't', 't', 't', 'f', 't'];

Chúng tôi được yêu cầu viết một hàm JavaScript có trong một mảng như vậy. Hàm của chúng ta sẽ đếm số lần xuất hiện liên tiếp của những chữ 't' được kẹp giữa hai chữ 'f và trả về một mảng có số lượng đó.

Do đó, đối với mảng trên, đầu ra sẽ giống như -

const output = [1, 3, 6, 1];

Ví dụ

Mã cho điều này sẽ là -

const arr = ['f', 't', 'f', 't', 't', 't', 'f', 'f', 't', 't', 't', 't', 't', 't', 'f', 't'];
const countClusters = (arr = []) => {
   let res = [];
   res = arr.reduce((acc, val) => {
      const { length: l } = acc;
      if(val === 't'){
         acc[l - 1]++;
      }
      else if(acc[l - 1] !== 0){
         acc.push(0);
      };
      return acc;
   }, [0]);
   return res;
};
console.log(countClusters(arr));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[ 1, 3, 6, 1 ]