Javascript-如何在没有shift()的情况下实现队列?

Javascript-如何在没有shift()的情况下实现队列?,javascript,Javascript,我是JavaScript新手,有一个使用push和shift方法实现的队列。但一旦队列长度足够大,性能就会下降。除了在JavaScript中实现不使用shift方法进行deque的队列之外,还有其他方法吗 实际上,这是关于什么样的数据结构适合使用 您表现不佳的原因是: 由于在数组的开头添加元素,此操作需要修改整个数组 使用链表而不是数组: 在这种情况下,链表更适合使用,我想你可以通过google找到一个库,或者如果你想自己实现,试着定义一个链表数据结构,然后从中添加/删除,这对于大队列来说更快,

我是JavaScript新手,有一个使用push和shift方法实现的队列。但一旦队列长度足够大,性能就会下降。除了在JavaScript中实现不使用shift方法进行deque的队列之外,还有其他方法吗

实际上,这是关于什么样的数据结构适合使用

您表现不佳的原因是: 由于在数组的开头添加元素,此操作需要修改整个数组

使用链表而不是数组:
在这种情况下,链表更适合使用,我想你可以通过google找到一个库,或者如果你想自己实现,试着定义一个链表数据结构,然后从中添加/删除,这对于大队列来说更快,因为它只修改几个指针,不是整个列表。

您考虑过链表吗?这不是JavaScript特有的。您读过吗?请使用.unshift和.pop:-出于好奇,有多少项足够大,可以减慢速度?@dandavis-每个队列元素都包含一个JSON对象,其中包含对jpeg图像的引用。我对队列中的每个对象进行赋格,并使用shift对它们进行赋格。我将这些图像加载到DOM中,希望在这里使用正确的术语,当队列长度超过200个项目时,我的浏览器会缓慢地渲染图像。每个JSON对象“指向”50幅1280 x 720、1Mb大小的jpeg图像。我来自C嵌入式背景,我试图了解javascript在处理大量图像时的性能。shift确实会删除数组开头的元素。@Bergi如果您有一个队列,您将修改队列两端的添加或删除元素,无论使用哪种方法。链表?看起来你说的是Java而不是JS。@Fabricio Matté常见的数据结构(如链表)与特定的编程语言无关,你可以用c/Java/javascript/lisp/…实现它,它不仅仅存在于Java中,好吗?@flybird是的,但是我找不到你所说的谷歌JS实现。当然,网络上还有其他一些实现。例如