假设我有以下复选框:

<input type="checkbox" value="1-25" />

为了得到定义我正在寻找的范围边界的两个数字,我使用下面的jQuery:

var value = $(this).val();
var lowEnd = Number(value.split('-')[0]);
var highEnd = Number(value.split('-')[1]);

然后,我如何创建一个包含lowEnd和highEnd之间的所有整数的数组,包括lowEnd和highEnd本身?对于这个特定的例子,显然,结果数组将是:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]

当前回答

var list = [];
for (var i = lowEnd; i <= highEnd; i++) {
    list.push(i);
}

其他回答

我强烈推荐下划线或低破折号库:

http://underscorejs.org/#range

(几乎完全兼容,显然lodash运行更快,但下划线有更好的doco恕我直言)

_.range([start], stop, [step])

这两个库都有很多非常有用的实用程序。

您可以设计一个range方法,使“从”数增加所需的数量,直到达到“到”数。 这个例子将“计数”向上或向下,这取决于from比to大还是比to小。

Array.range= function(from, to, step){
    if(typeof from== 'number'){
        var A= [from];
        step= typeof step== 'number'? Math.abs(step):1;
        if(from> to){
            while((from -= step)>= to) A.push(from);
        }
        else{
            while((from += step)<= to) A.push(from);
        }
        return A;
    }   
}

如果你想步进一个小数:Array.range(0,1,01) 您将需要截断任何浮点不精确的值。 否则你会返回类似的数字 0.060000000000000005而不是。06。

这给另一个版本增加了一点开销,但对于整数或十进制步骤是正确的。

Array.range= function(from, to, step, prec){
    if(typeof from== 'number'){
        var A= [from];
        step= typeof step== 'number'? Math.abs(step):1;
        if(!prec){
            prec= (from+step)%1? String((from+step)%1).length+1:0;
        }
        if(from> to){
            while(+(from -= step).toFixed(prec)>= to) A.push(+from.toFixed(prec));
        }
        else{
            while(+(from += step).toFixed(prec)<= to) A.push(+from.toFixed(prec));
        }
        return A;
    }   
}

将http://minifiedjs.com/添加到答案列表中:)

Code类似于下划线和其他:

var l123 = _.range(1, 4);      // same as _(1, 2, 3)
var l0123 = _.range(3);        // same as _(0, 1, 2)
var neg123 = _.range(-3, 0);   // same as _(-3, -2, -1)
var empty = _.range(2,1);      // same as _()

文档: http://minifiedjs.com/api/range.html

我使用minify .js,因为它解决了我所有的问题,占用空间小,语法容易理解。对我来说,它是一个框架中jQuery, MustacheJS和下划线/SugarJS的替代品。

当然,它不像下划线那样流行。这可能是一些人的担忧。

Minified是由Tim Jansen使用CC-0(公共域)许可证提供的。

const range = (start, stop, step) => Array.from({ length: (stop - start) / step + 1}, (_, i) => start + (i * step));

来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from

希望下面的方法对大家有所帮助。 这里可以用count变量来表示数组的长度。

const generateRandomArryOfNumbers = (min = 1, max = 100, count = 31) => {
  return Array.from(new Array(count), () =>
    Math.floor(Math.random() * (max - min + 1) + min)
  );
};