[英]Loop through 2 number ranges on javascript
我正在开发一种解决方案,在该解决方案上,我需要遍历两个单独的连续数字范围。 假设例如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]));
}
这段代码可以完成任务,但是有很多开销和不必要的操作:
有没有更简单/更有效的方法来执行这种操作? 像这样:
for(x = 1 to 5, then x = 10 to 15) {
// do something with x
}
限制条件:
我已经搜索了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做某事”而不在数组中存储“某物”的结果,则可以将javascript
简化为
for (let [from, to] of [[1, 6], [10, 16]]) for (let x = from; x < to; x++) console.log(x); // do stuff with `x`
这不一定效率更高,但是可以使所有内容保持整洁并防止重复代码。
基本上,编写一个函数,该函数接受范围数组和在指定范围内的每次循环迭代中执行的回调。
如果需要,范围和当前索引将传递给回调。
function loop(ranges, callback) {
ranges.forEach(function (range) {
for (var i = range[0]; i <= range[1]; i++) callback(range, i);
});
}
var ranges = [
[1, 5],
[10, 15],
];
var callback = function (range, i) {
console.log(i);
}
loop(ranges, callback);
我只是清楚要添加到数组中的内容和范围。
遵循以下代码:
var startAt = 1; var midStop = 6; var highStop = 16; var stopAt = 20; var X = []; for (i = startAt; i < stopAt; i++) { if (i < midStop || i > highStop) { X.push(i); } } var j = startAt; X.forEach(function(x) { console.log("[" + j++ + "]:" + x); });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.