假设我有以下复选框:

<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]

当前回答

Const范围=(开始:数字,结束:数字)=> { (var I = start, list = [];I <= end;list.push(我),我+ +); 返回列表; };

其他回答

var values = $(this).val().split('-'),
    i = +values[0],
    l = +values[1],
    range = [];

while (i < l) {
    range[range.length] = i;
    i += 1;
}

range[range.length] = l;

可能有一个烘干机的方式来做循环,但这是基本的想法。

ES6:

使用Array.from (docs here):

console.log ( Array.from({长度:5},(v, k) = > k + 1) )

在下划线中求解

data = [];
_.times( highEnd, function( n ){ data.push( lowEnd ++ ) } );

我的五分钱:

两个方向的整数数组函数。

当range(0,5)变为[0,1,2,3,4,5]时。

范围(5,0)变为[5,4,3,2,1,0]。

基于这个答案。

function range(start, end) {
  const isReverse = (start > end);
  const targetLength = isReverse ? (start - end) + 1 : (end - start ) + 1;
  const arr = new Array(targetLength);
  const b = Array.apply(null, arr);
  const result = b.map((discard, n) => {
    return (isReverse) ? n + end : n + start;
  });

  return (isReverse) ? result.reverse() : result;
}

附注:为了在现实生活中使用,你还应该检查isFinite()和isNaN()的参数。

在JavaScript ES6中:

函数范围(start, end) { 返回Array(end - start + 1).fill()。Map ((_, idx) => start + idx) } Var结果= range(9,18);// [9,10,11,12,13,14,15,16,17,18] console.log(结果);

为了完整起见,这里有一个可选的step参数。

函数范围(start, end, step = 1) { const len =数学。楼层((结束-开始)/台阶)+ 1 返回数组(len) .fill()。Map ((_, idx) => start + (idx * step)) } Var结果= range(9,18,0.83); console.log(结果);

我会在实际项目中使用npm的range-inclusive。它甚至支持后退,这很酷。