用javascript实现队列的最佳方法?

用javascript实现队列的最佳方法?,javascript,Javascript,嗨,我想在javascript中使用一个队列。所以我想我可以做三件事中的一件: javascript推、移 array.push()、array[0]、array.splice(0,1)等 Queue.js位于 所以我读了queue.js,对基准测试感到困惑,因为我真的不知道这些数字是什么意思。另外,我猜有比我提到的3种更好的排队方式 那么,用javascript实现队列的最佳方法是什么?为什么?另外,如果有人能解释一下我所描述的三种方法的优缺点,那将非常有帮助。谢谢 这里是一个基本的队列定义,

嗨,我想在javascript中使用一个队列。所以我想我可以做三件事中的一件:

  • javascript推、移

  • array.push()、array[0]、array.splice(0,1)等

  • Queue.js位于

  • 所以我读了queue.js,对基准测试感到困惑,因为我真的不知道这些数字是什么意思。另外,我猜有比我提到的3种更好的排队方式


    那么,用javascript实现队列的最佳方法是什么?为什么?另外,如果有人能解释一下我所描述的三种方法的优缺点,那将非常有帮助。谢谢

    这里是一个基本的队列定义,它非常适合我

    queue: function() {
        var items;
    
        this.enqueue = function(item) {
            if (typeof(items) === 'undefined') {
                items = [];   
            }
    
            items.push(item);                       
        }
    
        this.dequeue = function() {
            return items.shift();                                                
        }
    
        this.peek = function(){
            return items[0];                  
        }
    }
    

    Queue.js使用的是类似于您的第二个命题的东西,但效率较低,因为它需要不必要的测试,本机方法会得到更好的优化。我肯定会使用Sacket的解决方案。

    你需要在短时间内进行1000次计算吗?你必须说你为什么在乎?如果它是关于性能的,那么您可以根据您认为您将拥有的任何输入/输出模式来运行jsperf。如果是你关心的其他事情,你必须说出那是什么。如果我这样做的话,我会使用push/shift,因为它非常简单。我关心性能,并查看了queue.js的基准测试,但我不确定这个数字是什么意思?我浏览器(Firefox 6)中的基准测试显示,本机数组方法总是比queue.js快,所以看起来shift()和unshift()都经过了优化。除非您需要支持较旧的浏览器,否则您不应该费心使用库。我已经针对iojs array methods v1.5进行了自己的测试,并且使用了我正在使用的特定访问模式(enqueue 1000、dequeue 500、enqueue 500、dequeue 1000)Queue.js(以及我自己的解决方案)轻松击败了阵列解决方案。这对您来说有什么好处,使用方法而不是数组使队列成为对象(并直接使用
    push()
    shift()
    [0]
    )?这是一种常见的编码实践,即使用有意义的API(当然,超过基本数据类型),尤其是为了提高代码可读性和解释性。此外,如果需要,您还可以在以后的某个时间点更改实现,同时不更改调用者的。