javascript - 计算 Javascript 数组中条纹的最佳方法是什么?

标签 javascript arrays loops

请考虑这个数组:

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/

相关文章:

javascript - Safari 扩展在 Safari 浏览器版本 5、mac OS 雪豹中作为文件打开

javascript - 获取跨度内文本的值

java - 理解合并排序的栅栏处理问题

java - 如果给出无效响应,请重新运行 main 方法?

c# - 如何在 C# 中定义文本框数组?

PHP与html混合无输出

Javascript |创建一个在页面关闭前触发的弹出窗口

javascript - 如何删除谷歌地图 Api v3 中的道路标签?

java - 如何将二维字符串数组转换为一维字符串数组?

java - 将行添加到 JAVA 中具有给定首字母的数组中