我有这样的值:[0,0,0,0,1],我想写一个代码,告诉我有1行4个0,就像上面的例子一样,如果有2行4个0,就像:[0,0,0,0,1,0,0,0,0]从今往后,它应该说有2行4个0。如果你们能帮我,我怎么能做到呢?
我没有尝试过任何东西,我只考虑过用I索引计数0,但它只是计数0,就像有4个0一样,但我想计数有多少行0。
您可以搜索1
并存储它的最后位置。重复操作,直到没有多余的项目,并检查是否存在剩余的项目。
const
fn = array => {
const counts = [];
let l = 0,
i = array.indexOf(1);
while (i !== -1) {
counts.push(i - l);
l = i + 1;
i = array.indexOf(1, i + 1);
}
if (array.length - l > 0) counts.push(array.length - l);
return counts;
};
console.log(...fn([0, 0, 0, 0, 1])); // 4
console.log(...fn([0, 0, 0, 0, 1, 0, 0, 0, 0])); // 4 4
console.log(...fn([0, 0, 0, 0, 1, 0, 0, 0, 0, 1])); // 4 4
使用regexp和实例方法的函数式方法:
const numbers = [0, 0, 0, 0, 1, 0, 0, 0, 0];
const getRowsOfZeros = (array) => array.join('').match(/0{4}/g).length;
getRowOfZeros(numbers) // 2
函数将返回一个整数,表示四个0
在给定数组中出现的次数。
要了解这里的任何方法,请参阅MDN。
希望对你有帮助。