<div dir="ltr">Good insight. I wasn't aware that using an empty object in the Map.set implementation would yield unique keys, but it makes sense... You mention sub-linear time, but not constant? Is Map expected to have a lot of collisions? It seems as if it would be fine, based on the spec, but I'll run a benchmark to see where V8's map ops stand in comparison to the external queue / deque libraries.<div><br></div><div>Is there any way to extend that to a deque with similar operation times? I don't see anything out-of-box, but it looks like the map iterator keeps a numerical index of the keys. Could this be used to allow an iterator in the reverse direction? <a href="https://tc39.github.io/ecma262/#sec-createmapiterator">https://tc39.github.io/ecma262/#sec-createmapiterator</a> , the MapNextIndex. Or is this index just meant to be a counter to check for exhaustion of the iterator?<font face="yw-5935242c34ebdf77e1f164cd199306eb32ad03af-ea7323ad69002e908224379b1e14b05c--to" style="display:none"></font></div><div><br></div><div>Assuming this Map approach is performant, I still think syntactic sugar would be nice. Although, wrapping up a Map implementation in an alleged Queue might be misleading.</div><div><br></div><div>Are there any discussions around including linked structures? Or maybe a reversed Iterable for each iterable?</div><div><br></div><div><br></div><img src="https://t.yesware.com/t/5935242c34ebdf77e1f164cd199306eb32ad03af/ea7323ad69002e908224379b1e14b05c/spacer.gif" style="border: 0px; width: 0px; height: 0px; overflow: hidden;" width="0" height="0"><img src="http://t.yesware.com/t/5935242c34ebdf77e1f164cd199306eb32ad03af/ea7323ad69002e908224379b1e14b05c/spacer.gif" style="border: 0px; width: 0px; height: 0px; overflow: hidden;" width="0" height="0"></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr" style="font-size:small;font-family:arial"><font face="arial, helvetica, sans-serif">Best,</font></div><div dir="ltr" style="font-size:small;font-family:arial"><font face="arial, helvetica, sans-serif"><br></font></div><div dir="ltr" style="font-size:small;font-family:arial"><font face="arial, helvetica, sans-serif">Zach Boldyga</font></div><div dir="ltr" style="font-size:small;font-family:arial"><div><font face="arial, helvetica, sans-serif">Scalabull  |  Founder</font></div><div><font face="arial, helvetica, sans-serif">1 (866) 846-8771 x 101</font></div></div></div></div></div></div></div></div></div></div></div></div></div>
<br><div class="gmail_quote">On Sat, Feb 25, 2017 at 3:27 PM, Oriol _ <span dir="ltr"><<a href="mailto:oriol-bugzilla@hotmail.com" target="_blank">oriol-bugzilla@hotmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div dir="ltr">
<div id="m_-2798208258892873038divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Arial,Helvetica,sans-serif,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols" dir="ltr">
<div>Hello,<br>
<br>
you can try using a Map with unique keys. Map operations are guaranteed to be sublinear on average, and new entries are added to the end.<br>
<br>
Then you only need a trivial wrapper for better abstraction:<br>
<br>
```js<br>
class Queue {<br>
  constructor() {<br>
    this._map = new Map();<br>
  }<br>
  push(value) {<br>
    this._map.set({}, value);<br>
  }<br>
  pop() {<br>
    var first = this._map.entries().next();<br>
    if (first.done) return;<br>
    this._map.delete(first.value[<wbr>0]);<br>
    return first.value[1];<br>
  }<br>
  get size() {<br>
    return this._map.size;<br>
  }<br>
}<br>
var q = new Queue();<br>
q.push(1);<br>
q.push(2);<br>
q.pop(); // 1<br>
q.push(3);<br>
q.pop(); // 2<br>
q.pop(); // 3<br>
q.pop(); // undefined<br>
```<span class="HOEnZb"><font color="#888888"><br>
<br>
-- Oriol<br>
</font></span></div>
<br>
</div>
</div>

</blockquote></div><br></div>