Edit: that `while (i < count)` should be `while (i < end)`, where `end = length * count`. My bad. -----
Isiah Meadows [email protected] Looking for web consulting? Or a new website? Send me an email and we can get started. www.isiahmeadows.com On Sun, Mar 25, 2018 at 10:21 PM, Isiah Meadows <[email protected]> wrote: > That *could* repeat an array, but it's not very good as a polyfill (it > creates too many intermediate arrays). I'd expect a polyfill would be > closer to this: > > ```js > const ToInteger = x => (x = +x; x - x % 1) > > Array.prototype.repeat = function repeat(count) { > count = ToInteger(count) > let o = Object(this) > let length = ToInteger(o.length) > let output = new Array(length * count) > let i = 0 > while (i < count) { > let j = 0 > while (j < length) output[i++] = o[j++] > } > return output > } > ``` > > And while we're at it, could we also add a `Array.prototype.set` to > mirror `TypedArray.prototype.set`? I could've used that several times > already, and it's an easily vectorized operation. > > ----- > > Isiah Meadows > [email protected] > > Looking for web consulting? Or a new website? > Send me an email and we can get started. > www.isiahmeadows.com > > > On Sun, Mar 25, 2018 at 2:36 PM, Peter Jaszkowiak <[email protected]> wrote: >> I'm guessing this would be an appropriate polyfill: >> >> ``` >> Array.prototype.repeat = function repeat(count) { >> let output = this; >> while (--count) { >> output = output.concat(this); >> } >> return output; >> }; >> ``` >> >> On Sun, Mar 25, 2018 at 12:27 PM, Cyril Auburtin <[email protected]> >> wrote: >>> >>> String and Array share a few methods. >>> >>> I think `repeat` could exist for Array as well >>> >>> At the moment are other more verbose ways to do so: >>> >>> - `Array.from({length: n}, () => 'foo')` >>> - `Array(n).fill('foo')` >>> - `[].concat(...Array.from({length: 3}, () => ['x', 'y']))` >>> - `[].concat(...Array(3).fill(['x', 'y']))` >>> >>> so with repeat it would just be; >>> >>> - `['foo'].repeat(n)` >>> - `['x', 'y'].repeat(3)` >>> >>> _______________________________________________ >>> es-discuss mailing list >>> [email protected] >>> https://mail.mozilla.org/listinfo/es-discuss >>> >> >> >> _______________________________________________ >> es-discuss mailing list >> [email protected] >> https://mail.mozilla.org/listinfo/es-discuss >> _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

