javascript - Typescript 检查 "any n consecutive elements are same"是否在 M 大小的数组中

标签 javascript arrays linq typescript linq.js

我有一个大小为 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 函数。

最佳答案

你可以这样做

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);

关于javascript - Typescript 检查 "any n consecutive elements are same"是否在 M 大小的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39561743/

相关文章:

javascript - AJAX Post 的奇怪 Javascript/PHP 行为

javascript - 将 JSON 编码的 PHP 变量传递给 HighCharts

javascript - 如何隐藏数据表中的标题行?

c++ - 如何使用自定义 STL vector 类避免智能指针 delete[] 异常?

arrays - 在 Swift 中将字符串数组添加到 firebase

c# - 如何将 Expression<Func<T,bool>> 替换为 linq to sql 表达式的 where 子句

javascript - 用事件触发元素功能

ruby-on-rails - 空数组在 Rails 中为 NULL

c# - 在不使用 string.Join 的情况下加入 string[]

c# - 如何将 IEnumerable<Task<T>> 转换为 IObservable<T>