Array.range() (was: Suggestion: Array.prototype.repeat)

Rick Waldron waldron.rick at gmail.com
Tue Jan 3 09:32:52 PST 2012


I think it's fairly common for range implementations to provide an optional
`step` parameter

On Tue, Jan 3, 2012 at 12:08 PM, Axel Rauschmayer <axel at rauschma.de> wrote:

> On Jan 3, 2012, at 15:46 , Greg Smith wrote:
>
> > What is the use case for .repeat? Trying to imagine some code where I'd
> need it so I can get a feel for how it should work.
>
> So beauty alone does not count? ;-)
>
> It’s true – there are not a lot of use cases for Array.repeat().
>
> But I keep thinking that there should be a way to create an array of a
> given length *with* content in it. Rationale: such an array is nice to have
> as a starting point for a transformation via Array.prototype.map() or an
> array comprehension [1]. How about the following?
>
>    Array.range = function (start, end) {
>        if (arguments.length < 1 || arguments.length > 2) {
>            throw new TypeError("Need one or two arguments");
>        }
>        if (arguments.length === 1) {
>            end = start;
>            start = 0;
>        }
>        var result = [];
>        for(var i=start; i < end; i++) {
>            result.push(i);
>        }
>        return result;
>    }
>
> Interaction:
>
>    > Array.range(4)
>    [ 0, 1, 2, 3 ]
>    > Array.range(4).map(function () { return "*" })
>    [ '*', '*', '*', '*' ]
>
> I’m not yet sure how many use cases there are (suggestions welcome), but
> it does fill a hole (IIRC, Python has something similar).
>
> TODO: This method probably makes more sense as an iterator (e.g.
> implemented via a generator). Then one could even omit the upper limit and
> produce an unlimited sequence.
>
> [1] http://wiki.ecmascript.org/doku.php?id=harmony:array_comprehensions
>
> --
> Dr. Axel Rauschmayer
> axel at rauschma.de
>
> home: rauschma.de
> twitter: twitter.com/rauschma
> blog: 2ality.com
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20120103/954c53c0/attachment.html>


More information about the es-discuss mailing list