2011-09-18 30 views
3

嗨我想在JavaScript中使用队列。所以我想我可以做1 3的东西:在JavaScript中实现队列的最佳方式?

  1. 的javascript推,移位

  2. 的Array.push(),阵列[0],方法Array.splice(0,1)等等

  3. queue.js在http://code.stephenmorley.org/javascript/queues/#download

所以,我是读queue.js和感到困惑的基准,因为我真的不知道这些数字的含义。另外,我猜测有比我提到的3更好的排队方法。

那么在javascript中实现队列的最佳方式是什么?如果有人能够解释我描述的3种方式的优点和缺点,那将是非常有用的。谢谢 !

+0

您是否需要在短时间内进行1000次计算? – epascarello

+1

你必须说明你为什么在意?如果是关于性能,那么你可以自己运行一个jsperf,不管你认为你会拥有哪种进/出模式。如果这是你关心的其他事情,那么你必须说出那是什么。如果我这样做,我会使用推/换,因为它非常简单。 – jfriend00

+0

我很在意性能,并且正在研究queue.js的基准,但我不确定这个数字是什么意思? – Derek

回答

4

这是一个基本的队列定义,它对我来说非常合适。

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];     
    } 
} 
+1

对你来说,使用方法而不是数组(而使用'push()','shift()'和'[0]')使对象成为队列的优势是什么? – s4y

+2

那么,这是一个通用的编码实践,它具有有意义的API(当然,还有基本的数据类型),尤其是为了提高代码的可读性和解释性。此外,如果需要,在稍后的时间点给您机会改变您的实施方式,同时不更改来电者。 – Saket

1

Queue.js使用像你的第二个命题,但因为它要求不必要的测试,本机方法可以更好地优化它的效率较低。我肯定会使用Sacket的解决方案。

相关问题