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 :
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>