【问题标题】:Group numbers from array that are right after each other数组中紧挨着的数字组
【发布时间】:2021-08-07 21:09:27
【问题描述】:

我有一个包含如下数字的数组:

[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 中是否有其他方法可以做到这一点?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 2017-08-24
      • 2015-10-17
      • 2011-01-06
      相关资源
      最近更新 更多