假设我们有一个以't'/'f'表示的true / false数组,它是从这样的数据库中检索的-
const arr = ['f', 't', 'f', 't', 't', 't', 'f', 'f', 't', 't', 't', 't', 't', 't', 'f', 't'];
我们需要编写一个包含一个这样的数组的JavaScript函数。我们的函数应该对夹在两个“ f”之间的“ t”的连续出现进行计数,并返回该计数的数组。
因此,对于上述数组,输出应类似于-
const output = [1, 3, 6, 1];
为此的代码将是-
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));
输出结果
控制台中的输出将是-
[ 1, 3, 6, 1 ]