请考虑这个数组:
let tab = [0,0,0,1,1,1,0,0,0,0,1,0,1,1,1,1,1]
获得“5”作为最长连续值“1”的最佳方法是什么?
非常感谢您的帮助!
最佳答案
您可以使用 .reduce()
创建一个新数组,当找到 0
时,它会获取 0
,或者递增最后一个数组其中的项目。
然后使用 Math.max
查找最大数字。
let tab = [0,0,0,1,1,1,0,0,0,0,1,0,1,1,1,1,1];
let streaks = tab.reduce((res, n) =>
(n ? res[res.length-1]++ : res.push(0), res)
, [0]);
console.log(streaks.join(","));
console.log(Math.max(...streaks));
这是代码的 ES5 版本。
let tab = [0,0,0,1,1,1,0,0,0,0,1,0,1,1,1,1,1];
let streaks = tab.reduce(function(res, n) {
if (n) res[res.length-1]++;
else res.push(0);
return res;
}, [0]);
console.log(streaks.join(","));
console.log(Math.max.apply(Math, streaks));
关于javascript - 计算 Javascript 数组中条纹的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46874250/