将数字范围设置为变量 (Javascript)

Set a range of numbers as a variable (Javascript)

假设我想要一个变量包含从 1 到 100 的数字。 我可以这样做:

var numbers = [1,2,3,4,...,98,99,100]

但是写下所有这些数字需要花费大量时间。 有没有办法为该变量设置范围?类似于:

var numbers = [from 1, to 100] 

这听起来像是一个非常菜鸟的问题,但我自己还没弄明白。提前致谢。

除了this answer之外,还有一些方法可以做到:

for循环:

var numbers = []
for (var i = 1; i <= 100; i++) {
    numbers.push(i)
}


Array.prototype.fill + Array.prototype.map

var numbers = Array(100).fill().map(function(v, i) { return i + 1; })

或者,如果您被允许使用 arrow functions:

var numbers = Array(100).fill().map((v, i) => i + 1)

或者,如果您被允许使用 spread operator:

var numbers = [...Array(100)].map((v, i) => i + 1)


但是,请注意,使用 for 循环是 fastest.

在对象中存储最小和最大范围:

var a = {
    from: 0,
    to: 100
};

包括 IE9+ 在内的所有现代浏览器都支持。

var numbers = Array.apply(null,Array(100)).map(function(e,i){return i+1;});

您可以轻松创建自己的,并仅存储限制:

function Range(begin, end) {
  this.low = begin;
  this.hi = end;
  this.has = function(n) {
     return this.low <= n <= this.hi;
  }
}

// code example
var range = new Range(1,100);
var num = 5;

if (range.has(num)) {
  alert("Number in range");
}

对于它的价值,@MaxZoom 的答案适合我的情况。但是,我确实需要修改 return 语句以使用 && 比较进行评估。否则似乎 return 对任何数字都是正确的。

function Range(begin, end) {
  this.low = begin;
  this.hi = end;
  this.has = function(n) {
      //return this.low <= n <= this.hi;
      return ( n >= this.low && n <= this.hi );
  };
}

// code example
var alertRange = new Range(0,100);
var warnRange = new Range(101, 200);

var num = 1000;

if (alertRange.has(num)) {
    alert("Number in ALERT range");
    //Add Alert Class
}
else if (warnRange.has(num)) {
    alert("Number in WARN range");
    //Add Warn Class
}
else{
    alert("Number in GOOD range")
    //Default Class
}

Python

# There can be two ways to generate a range in python
# 1) 
a = [*range(5)]
print(a) 
#[0, 1, 2, 3, 4]

# 2) 
a = [*range(5,10)]
print(a) 
#[5, 6, 7, 8, 9]

Javascript

// Similar pattern in Javascript can be achieved by
let a;
// 1)
a = [...Array(5).keys()]
console.log(a) //[0, 1, 2, 3, 4]

// 2) 
a = [...Array(5).keys()].map(value => value + 5);
console.log(a) //[5,6,7,8,9]