Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create array of all integers between two numbers, inclusive, in Javascript/jQuery

Say I have the following checkbox:

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

To get the two numbers that define the boundaries of range I'm looking for, I use the following jQuery:

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

How do I then create an array that contains all integers between lowEnd and highEnd, including lowEnd and highEnd themselves? For this specific example, obviously, the resulting array would be:

[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]
like image 987
40 Degree Day Avatar asked Nov 09 '11 17:11

40 Degree Day


3 Answers

var list = [];
for (var i = lowEnd; i <= highEnd; i++) {
    list.push(i);
}
like image 198
Ben Avatar answered Sep 18 '22 13:09

Ben


ES6 :

Use Array.from (docs here):

console.log(
   Array.from({length:5},(v,k)=>k+1)
)
like image 29
Abdennour TOUMI Avatar answered Sep 20 '22 13:09

Abdennour TOUMI


In JavaScript ES6:

function range(start, end) {
  return Array(end - start + 1).fill().map((_, idx) => start + idx)
}
var result = range(9, 18); // [9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
console.log(result);

For completeness, here it is with an optional step parameter.

function range(start, end, step = 1) {
  const len = Math.floor((end - start) / step) + 1
  return Array(len).fill().map((_, idx) => start + (idx * step))
}
var result = range(9, 18, 0.83);
console.log(result);

I would use range-inclusive from npm in an actual project. It even supports backwards steps, so that's cool.

like image 33
m59 Avatar answered Sep 19 '22 13:09

m59