js数组Array模拟对列

42 阅读1分钟

1.使用到的Array方法有:push()、pop()

2.对列对象代码:

class Queue {
    arr = [];
    offset = 0;
    // 初始化对象参数
    constructor(arr) {
        this.arr = arr;
        this.offset = 0;
    }
    // 队尾插入元素
    push(item) {
        this.arr.push(item);
    }
    // 队首弹出元素
    shift() {
        // shift在数据比较多时性能比较差
        // this.arr.shift();
        const item = this.arr[this.offset];
        this.arr[this.offset] = undefined;
        this.offset += 1;
        // 防止undefined数量过多
        if (this.offset > this.arr.length / 2) {
            this.arr.splice(0, this.offset);
            this.offset = 0;
        }
        return item;
    }
    // 第一个对列元素
    first() {
        return this.arr.length > 0 ? this.arr[this.offset] : undefined;
    }
    // 判断队列是否为空
    isEmpty() {
        return this.arr.length === 0;
    }
    // 清空队列
    clear() {
        this.arr = [];
    }
    // 获取队列的大小
    size() {
        return this.arr.length;
    }
}