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 
<[email protected]> 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 <[email protected]> 
wrote:

> maybe fill with incrementing number?
```jsArray.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 <[email protected]>:

Whatever the use cases might be, I like generators and spread for filling an 
array with values, e.g.:
```jsfunction* 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 
<[email protected]> 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
[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

Reply via email to