Cycymomo
11/22/2013 - 1:00 PM

initArray.js

/**
 * Create an array with `len` elements.
 * 
 * @param [initFunc] Optional: a function that returns
 * the elements with which to fill the array.
 * If the function is omitted, all elements are `undefined`.
 * `initFunc` receives a single parameter: the index of an element.
 */
function initArray(len, initFunc) {
    if (typeof initFunc !== 'function') {
        // Yes, the return is uncessary, but more descriptive
        initFunc = function () { return undefined };
    }
    var result = new Array(len);
    for (var i=0; i < len; i++) {
        result[i] = initFunc(i);
    }
    return result;
}

/* Interaction:

> initArray(3)
[ undefined, undefined, undefined ]
> initArray(3, function (x) { return x })
[ 0, 1, 2 ]

*/