mh-two-thousand-and-two
2024-04-12 3d2ec2fd0578d3ba0a414b0cc4e4a2ae60878596
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
var Class = require('./Class');
exports = Class({
    initialize: function Queue() {
        this.clear();
    },
    clear: function() {
        this._items = [];
        this.size = 0;
    },
    enqueue: function(item) {
        this._items.push(item);
        return ++this.size;
    },
    dequeue: function() {
        if (!this.size) return;
        this.size--;
        return this._items.shift();
    },
    peek: function() {
        if (!this.size) return;
        return this._items[0];
    },
    forEach: function(iterator, ctx) {
        ctx = arguments.length > 1 ? ctx : this;
        var items = this._items;
        for (var i = 0, size = this.size; i < size; i++) {
            iterator.call(ctx, items[i], i, this);
        }
    },
    toArr: function() {
        return this._items.slice(0);
    }
});
 
module.exports = exports;