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

时间:2017-10-22 12:48:27

标签: javascript arrays loops

请考虑这个数组:

for pattern in training_data(pattern['sentence'])
    words.extend(w)
    documents.append((w, pattern['class']))
    if pattern['class'] not in classes:
        classes.append(pattern['classes'])

将“5”作为带有“1”值的最长条纹的最佳方法是什么?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:7)

您可以使用.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));