JSFiddle - React, Tailwind, and code Playground

by Oski Krawczyk

JavaScript

//
// Syntax: Array.Range(repeat, func)
// Syntax: Array.Range([start, end], func);
// Syntax: Array.Range([start, end, step], func);
//
Array.implement({
    Range: function(size, func) {
        var start = 0;
        var end   = 0;
        var step  = 1;
        var arr   = [];
        
        /* Fix paramiters */
        if ( $type(size) == "array" ) {
            arr = this;
        } else {
            func = size;
            size = this;
        }

        /* Define the Range */
        if ($type(size) == "number") {
            end = size
        } else {
            start  = size[0];
            end    = size[1];
            if ( size.length == 3 ) {
                step = size[2];
            }
        }
        
        /* Execute the function */
        for (var counter=start; counter<=end; counter+=step) {
            arr[counter] = func(counter);
        }
        
        return arr;
    }
});

console.log( Array.Range(5,          function(index){ return new Element('div', {html:index}); }));
console.log( Array.Range([3, 6],     function(index){ return new Element('div', {html:index}); }));
console.log( Array.Range([3, 10, 2], function(index){ return new Element('div', {html:index}); }));

staggered = Array.Range([2, 20, 2],     function(index){ return new Element('div',  {html:index}); });
staggered = staggered.Range([1, 19, 2], function(index){ return new Element('span', {html:index}); });

console.log(staggered);