Fill an Array with Sequential Values

By  on  

I've been contributing to Mozilla's awesome DevTools debugger because, well, I want to give back to the Firefox Engineers and all the developers who have stayed loyal to Firefox.  Having my hand in loads of Mozilla projects is really satisfying, especially for my ego.

In any event, one task required me to fill an array with every number in a sequence, then I would filter out unwanted items based on another array.  Here's how you can fill a range within an array:

const fillRange = (start, end) => {
  return Array(end - start + 1).fill().map((item, index) => start + index);
};

const allLines = fillRange(0, numLines - 1);

// [0, 1, 2, 3, 4, 5, ...]

From there I could filter out what I didn't want:

let executableLines = [/* series of line numbers with code */];
const emptyLines = allLines.filter(i => !executableLines.includes(i));

When the feature gets merged (...and no one complains about their Firefox debugger...) I'll share more about  my contribution!

Recent Features

  • By
    Create Namespaced Classes with MooTools

    MooTools has always gotten a bit of grief for not inherently using and standardizing namespaced-based JavaScript classes like the Dojo Toolkit does.  Many developers create their classes as globals which is generally frowned up.  I mostly disagree with that stance, but each to their own.  In any event...

  • By
    5 Awesome New Mozilla Technologies You’ve Never Heard Of

    My trip to Mozilla Summit 2013 was incredible.  I've spent so much time focusing on my project that I had lost sight of all of the great work Mozillians were putting out.  MozSummit provided the perfect reminder of how brilliant my colleagues are and how much...

Incredible Demos

  • By
    Checkbox Filtering Using MooTools ElementFilter

    When I first wrote MooTools ElementFilter, I didn't think much of it. Fast forward eight months later and I've realized I've used the plugin a billion times. Hell, even one of the "big 3" search engines is using it for their maps application.

  • By
    CSS Vertical Centering

    Front-end developing is beautiful, and it's getting prettier by the day. Nowadays we got so many concepts, methodologies, good practices and whatnot to make our work stand out from the rest. Javascript (along with its countless third party libraries) and CSS have grown so big, helping...

Discussion

  1. Would the instruction

    const allLines = fillRange(0, numLines - 1);

    not result in an array starting with zero as the first value?

    • Yes, you’re right! I’ve updated the post!

  2. Jorge Ortega

    Nice! Thanks to this post I could do this:

    // Array of 24 hours string values ['00'...'23']
    const hours = Array(24).fill().map((item, index) => index < 10 ? 0${index} : ${index})
    
    // Array of 60 minutes string values ['00'...'59']
    const minutes = Array(60).fill().map((item, index) => index < 10 ? 0${index} : ${index})
    
  3. Luca Borrione

    Great post! Little contribution:

    const fillRange = (start, end) => {
    	return [...Array(end - start + 1)].map((item, index) => start + index);
    }
    
    • Tracy-Gregory Gilmore

      Using an arrow function with a single expression does not require a return statement or statement block. Thus, the line of code above could be reduced to.

      const fillRange = (start, end) => 
         [...Array(end - start + 1)].map((item, index) => start + index);
      
  4. Nicolás Casanova

    This is great, but, one question. If I want to have a list with decimals numbers, how can I do it?
    example: 0.1 to 5.0. (resp: 0.1, 0.2, 0.3 … 4.8, 4.9, 5)
    How can I do this?
    Thanks! :D

    • MR T-G J GILMORE

      You could always map() the output of fillRange.

      const decimals = fillRange(0, 50).map(int => int / 10);
      
    • MR T-G J GILMORE

      That should have been 1 to 51:

      const decimals = fillRange(1, 51).map(int => int / 10);
      

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!