<div dir="ltr"><div>Unfortunately, `Array.from({ length: 4 }, () => whatever)` produces a holey array, so that the `.repeat(...)` idea, if capable of packing elements in a better way, wouldn't be so terrible, as simplification.</div><div><br></div><div>Although, the intent of this proposal was to also grant "shapes" or kindness of each entry, same way typed Arrays do, but maybe that would require some better primitive, as in `const Shape = Object.defineShape(...)` and `Object.createShape(Shape)` or similar.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Feb 9, 2020 at 10:01 PM Jordan Harband <<a href="mailto:ljharb@gmail.com">ljharb@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">That already exists - `Array.from({ length: 4 }, () => whatever)` - I assume that the hope is to have an array where it is *impossible* for it to have the wrong "kind" of data, and a userland factory function wouldn't provide that.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Feb 9, 2020 at 10:39 AM kai zhu <<a href="mailto:kaizhu256@gmail.com" target="_blank">kaizhu256@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">> It's a bit of a mess to create an Array that is not holed and gets best optimizations [1], and this proposal would like to address that exact case.</div><div dir="ltr"><br></div><div dir="ltr">could the performance issue be resolved more easily with a simple static-function `Array.repeat(<length>, <repeater>)`?<div><br></div><div><font face="monospace">```js</font></div><div><font face="monospace">let structuredList;</font></div><div><font face="monospace">structuredList = <font color="#ff0000">Array.repeat</font>(4, function (ii) {</font></div><div><font face="monospace">    return {</font></div><div><font face="monospace">        index: 2 * ii + 1,</font></div><div><font face="monospace">        tags: []</font></div><div><font face="monospace">});</font></div><div><font face="monospace">/*</font></div><div><font face="monospace">structuredList = [</font></div><div><font face="monospace">    { index: 1, tags: [] },</font></div><div></div><div><font face="monospace">    { index: 3, tags: [] },</font></div><div></div><div><font face="monospace">    { index: 5, tags: [] },</font></div><div></div><div><font face="monospace">    { index: 7, tags: [] }</font></div><div></div><div><span style="font-family:monospace">];</span><br></div><div><font face="monospace"> */</font></div><div><font face="monospace">```</font></div><div><br></div><div>the only time i can practically enforce the shape of a "StructuredArray" is during element-insertion,</div><div>and a userland insertion/creation function would be just as effective as a StructuredArray constructor.</div><div><br></div><div>enforcing shapes during element deletions and updates are going to be hard</div><div>and likely just as confusing with StructuredArray as they are with regular Array.</div><div><br></div><div>also note that most javascript arrays need to be easily JSON-serialized for message-passing</div><div>over-the-wire (commonly http) to external systems.</div><div><br></div><div>-kai</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Feb 8, 2020 at 3:46 AM Andrea Giammarchi <<a href="mailto:andrea.giammarchi@gmail.com" target="_blank">andrea.giammarchi@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>> having to retroactively add checks like...</div><div><br></div><div>we already have typed arrays in JS so I don't think this would be any different</div><div><br></div><div>> I _think_ that moderns virtual machines already did these optimisations despite there isn't a TypedArray like that.</div><div><br></div><div>It's a bit of a mess to create an Array that is not holed and gets best optimizations [1], and this proposal would like to address that exact case.<br></div><div><br></div><div>[1] <a href="https://v8.dev/blog/elements-kinds" target="_blank">https://v8.dev/blog/elements-kinds</a></div><div><br></div><div><br></div><div><br></div><div><br></div></div>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</blockquote></div></div>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</blockquote></div>
</blockquote></div>