我正在开发一个解决方案,我需要循环遍历两个单独的连续数字范围。例如 1 到 5 和 10 到 15。
我使用以下代码:
var X = [];
for (i = 1; i < 6; i++) {
X.push(i);
}
for (i = 10; i < 16; i++) {
X.push(i);
}
for (var x in X) {
console.log(parseInt(X[x]));
}
这段代码完成了这项工作,但有很多开销和不必要的操作:
- 花时间用所需的范围填充数组
- 通过索引访问元素以获取真实值 (X[x])
- 使用 parseInt 将值转换回整数(因为类型 X[x] 是字符串)
是否有更简单/更有效的方法来执行此类操作? 像这样的事情:
for(x = 1 to 5, then x = 10 to 15) {
// do something with x
}
<小时/>
限制:
- 使用两个内部具有相同代码的单独循环是没有用的,因为这 循环在代码的多个位置重复
- 将循环内容封装在函数内是不可取的
- 检查 x 边界并在循环内更新其值也是不可取的(我的意思是,检查 x == 5,然后将其更改为 10)
我已经搜索过SO但找不到任何解决方案。
提前致谢!
最佳答案
您可以使用for..of
循环、for
循环、展开元素
let res = [];
for (let [from, to] of [[1, 6], [10, 16]])
for (let x = from; x < to; x++) console.log(x); res.push(x);
console.log(res);
如果要求仅在console
处记录数字,或者“//用x做某事”而不将“something”的结果存储在数组中,我们可以将javascript
减少为
for (let [from, to] of [[1, 6], [10, 16]])
for (let x = from; x < to; x++) console.log(x); // do stuff with `x`
关于javascript - 在 JavaScript 上循环 2 个数字范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43990466/