javascript - 从数组中获取可能的序列
问题描述
我有一个像这样的数组,
const array = [1,3,4,5,6] // array will have unique values
我想以优化的方式从该数组中获取可能的序列,序列长度应大于 3
示例:我应该得到[[3,4,5,6]]
例子:
[1,2,3,5,8,9,10]
=> 输出应该是[[1,2,3],[8,9,10]]
我已经尝试过Array.every
,但无法弄清楚序列之间何时中断。
解决方案
const data = [1,2,3,5,8,9,10];
const result = data.reduce((seq, v, i, a) => {
if (i && a[i - 1] !== v - 1) {
seq.push([]);
}
seq[seq.length - 1].push(v);
return seq;
}, [[]]).filter(({length}) => length > 1);
console.log(result);
推荐阅读
- javascript - 拖放中的中断跨度
- angular - 角等待订阅完成然后返回
- php - 无法运行 php artisan schedule:run 命令
- python - 每天转换数据框行中给定的每个日期范围的数据
- laravel - Laravel 测试文件上传和调整大小
- database - 从 rabbitMQ 发送消息到 PostgreSQL
- python - Initialising an array using different array
- c# - 在 C# 程序中获取 MFA 信息
- google-sheets - 带有日期范围和唯一 ID 条件的 IMPORTRANGE 的 COUNTIF
- ffmpeg - 从 mxf 到 mp4 的 Nvidia Nvenc 视频转换在内部的多个流中出现错误