javascript - 数组中紧挨着的数字组
问题描述
我有一个包含一些数字的数组,如下所示:
[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 中是否有其他方法可以做到这一点?
解决方案
您可以在跟踪当前起始编号的同时循环一次。
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);
推荐阅读
- python-3.x - 这个 AssertionError 试图告诉我什么,我该如何解决?
- java - 在数组方法中计算交换和比较
- python - 如何将我的 while 循环与以前的代码链接并返回第一个循环的值
- c# - CarouselView 仅在加载时显示绑定项目
- java - Spring Resources 返回空白 html 页面
- apache-kafka - 使用 kafka 和键值存储的请求-响应
- yaml - Use Object Returned by readYaml from file in Declarative Jenkinsfile
- python - Flask-SQLAlchemy: Trying to use query.paginate() in reverse order
- r - 成功部署到 shinyapp.io 后打开我的闪亮应用程序时如何解决此错误?
- c# - Net Core:为所有表自动代码生成创建通用存储库接口 Id 映射