【问题标题】:Typescript Check if "any n consecutive elements are same" in M size arrayTypescript检查M大小数组中的“任何n个连续元素是否相同”
【发布时间】:2016-09-18 19:24:28
【问题描述】:

我有一个大小为 M(M>n) 的字符串或数字数组。我想检查是否有任何 n 个连续元素相同,其中 n 可以在 1-M 之间变化。

例如,假设我在数组下方,并且我想检查是否存在四个连续的 '5' 或两个连续的 '3':

{1,2,3,4,5,5,5,5,2,6,3,3,1}

我怎样才能做到这一点?

附:我也在使用 Linq.JS 对数组执行 linq 函数。

【问题讨论】:

  • 这是一个典型的reduce作业。
  • @Redu.. reduce 使用外部计数器?
  • 没有外部计数器...一旦我有时间,我会尝试发布答案。

标签: javascript arrays linq typescript linq.js


【解决方案1】:

你可以这样做

var arr = [1,2,3,4,5,5,5,5,2,6,3,3,1],
 result = arr.reduce((p,c,i,a) => c !== a[i+1] ? (p[p.length-1][0] = c, p.concat([[0,1]]))
                                               : (p[p.length-1][0] = c, p[p.length-1][1]++, p),[[true,1]])
             .slice(0,-1);
console.log(result);

【讨论】:

  • 它给了我完全不同的东西。
  • @Pratik Gaikwad 它为您提供了一个包含每个项目连续重复计数的数组。随心所欲地映射它。
  • 可能想要缓存以前的值,如果数组大小为数千,p[p.length-1][0] 操作可能会变得很耗时。简洁的要点。
猜你喜欢
  • 1970-01-01
  • 2018-04-22
  • 2022-11-22
  • 1970-01-01
  • 2018-06-15
  • 2015-10-31
  • 2023-03-09
  • 2018-12-01
  • 1970-01-01
相关资源
最近更新 更多