首页 > 解决方案 > 数组中紧挨着的数字组

问题描述

我有一个包含一些数字的数组,如下所示:

[1, 2, 3, 4, 6, 7, 8, 10, 15, 16, 17]

我想在一行中显示所有彼此直接相邻的数字(n+1),如果有间隙,应该分开。这将在 javascript/jquery 中完成。用户会看到这样的:

1 - 4, 6 - 8, 10, 15 - 17

我猜唯一的解决方案是遍历数组并查看下一个数字是否为 n+1,如果是,则将其放在一起,否则开始一个新的系列?我想我知道我会怎么做,但有兴趣知道在 javascript/jquery 中是否有其他方法可以做到这一点?

标签: javascriptjquery

解决方案


您可以在跟踪当前起始编号的同时循环一次。

let arr = [1, 2, 3, 4, 6, 7, 8, 10, 15, 16, 17];
let start = arr[0],
  res = [];
for (let i = 1; i < arr.length; i++) {
  if (arr[i + 1] - arr[i] != 1 || i == arr.length - 1) {
    res.push(start + " - " + arr[i]);
    start = arr[i + 1];
  }
}
console.log(res);


推荐阅读