Range of Years in JavaScript for a select box

Issue

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;
    }

Solution

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));

Answered By – Justin Johnson

Answer Checked By – Dawn Plyler (AngularFixing Volunteer)

Leave a Reply

Your email address will not be published.