Cyril Auburtin (2018-05-19T08:26:52.000Z)
pro: I think it's quite frequent to need `Array.from({length: .. }, () =>
...)`
con: you can't generate dynamic data (like an array of random values)

I think in the end this `Array.prototype.repeat` is not a good idea, but
there should be something easier/less verbose than `Array.from({length:
..}, (_, i) => i)`
maybe `Array.repeat(len, i => ..)` ?

Le mer. 28 mars 2018 à 17:10, Jerry Schulteis <jdschulteis at yahoo.com> a
écrit :

> First, Array.prototype.fill(value[, start[, end]]) already exists, so you
> need a new name (I'll provisionally use mjrFill).
> Second, Boolean arguments in an API are a pet peeve of mine, in
>
> ```js
> [].mjrFill(['a', 'b'], 2, true)
> ```
> it is not obvious what the third argument means.
>
> Third, what was originally asked for was Array.prototype.repeat, analogous
> to String.prototype.repeat(count), which returns a new string consisting of
> the specified number of copies of the original, so:
>
> ```js
> [0].repeat(3) // [0, 0, 0]
> [['a', 'b']].repeat(2) // [['a', 'b'], ['a', 'b']]
> ['a', 'b'].repeat(2) // ['a', 'b', 'a', 'b']
>
> [].mjrFill(arrayThatNeedsFlattening, n, true) // What does this do?
>
> arrayThatNeedsFlattening.flatten().repeat(n); // Hard to misunderstand.
> ```
>
> On Tuesday, March 27, 2018, 7:25:07 PM CDT, Michael J. Ryan <
> tracker1 at gmail.com> wrote:
>
>
> How about something like...
>
> Array.prototype.fill = function(filler, times, flatten) {
>   var ret = [].concat(this);
>   var len = Number(times) || 0;
>   var (var i=0; i<len; i++) {
>     if (flatten && Array.isArray(filler)) {
>       ret.push.apply(ret, filler);
>     } else {
>       ret.push(filler);
>     }
>   }
>   return ret;
> }
>
> [].fill(0, 3) // [0, 0, 0]
> [].fill(['a', 'b'], 2) // [['a', 'b'], ['a', 'b']]
> [].fill(['a', 'b'], 2, true) // ['a', 'b', 'a', 'b']
>
> --
> Michael J. Ryan - http://tracker1.info
>
>
> On Mon, Mar 26, 2018 at 12:02 PM Cyril Auburtin <cyril.auburtin at gmail.com>
> wrote:
>
> > maybe fill with incrementing number?
>
> ```js
> Array.from({length: 6}, (_, i) => i)
> ```
>
> > Are there use cases for filling with alternating values, as in `['x',
> 'y'].repeat(3)`?
>
> Not so many, but for example when working with flat matrices,
> `[0,0,255,1].repeat(len)` for generating quickly a uniform imageData
>
> But even with one item, I find `[x].repeat(n)` more explicit than the 2
> other alternatiives
>
> It's somewhat close to array comprehensions (that I don't really miss
> though)
>
>
> 2018-03-26 15:27 GMT+02:00 Jerry Schulteis <jdschulteis at yahoo.com>:
>
> Whatever the use cases might be, I like generators and spread for filling
> an array with values, e.g.:
>
> ```js
> function* repeat(n, ...values) {
>   for (let i = 0; i < n; ++i) {
>     yield* values;
>   }
> }
>
> [...repeat(3, 'x', 'y')]
> ```
>
>
> On Sunday, March 25, 2018, 3:41:10 PM CDT, Claude Pache <
> claude.pache at gmail.com> wrote:
>
>
> [...]
>
> For filling a new array with one value, `Array(n).fill('foo')` seems
> reasonable to me.
>
> Are there use cases for filling with alternating values, as in `['x',
> 'y'].repeat(3)`?
>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20180519/35995561/attachment.html>
cyril.auburtin at gmail.com (2018-05-19T08:43:19.421Z)
pro: I think it's quite frequent to need `Array.from({length: .. }, () =>
...)`  
con: you can't generate dynamic data (like an array of random values)

I think in the end this `Array.prototype.repeat` is not a good idea, but
there should be something easier/less verbose than `Array.from({length:
..}, (_, i) => i)`

maybe `Array.repeat(len, i => ..)` ?

Le mer. 28 mars 2018 à 17:10, Jerry Schulteis <jdschulteis at yahoo.com> a
écrit :