I'm trying to create a dynamic select box in JavaScript with a range of years starting with 'some' year and ending with the current year. Is there anything like Ruby's range class in JavaScript or do I have to loop trough the years using a for loop?
Here's what I've come up with though I think it's a bit much considering in Ruby I can just use a range.
this.years = function(startYear){ startYear = (typeof(startYear) == 'undefined') ? 1980 : startYear var currentYear = new Date().getFullYear(); var years = [] for(var i=startYear;i<=currentYear;i++){ years.push(i); } return years; }
JavaScript does have a Range object, but it refers to an arbitrary portion of the DOM and is not supported in IE 6/7.
If you want, you can simplify your function to this, but it's all the same really.
this.years = function(startYear) { var currentYear = new Date().getFullYear(), years = []; startYear = startYear || 1980; while ( startYear <= currentYear ) { years.push(startYear++); } return years; } console.log( this.years(2019-20));
Use Array.from
const currentYear = (new Date()).getFullYear(); const range = (start, stop, step) => Array.from({ length: (stop - start) / step + 1}, (_, i) => start + (i * step)); console.log(range(currentYear, currentYear - 50, -1)); // [2019, 2018, 2017, 2016, ..., 1969]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With