在javascript中创建队列的最佳方法是什么?

时间:2020-09-05 18:48:24

标签: javascript object data-structures queue

我知道javascript具有push / shift / pop属性,可帮助创建这种类型的数据结构。但是我知道在大型数据上使用它们并不是一个好主意,因为它必须遍历整个数组才能执行操作。那么..一个高效代码的例子是什么样的?

这是我的代码,但是在删除元素时使用“出队”时,即使它的值为“ null”,它仍然存储在内存中,如何避免这种情况?

class Queue {
  constructor() {
    this.items = {},
      this.front = 0,
      this.end = 0;
  }

  enqueue(data) {
    this.items[this.end] = data;
    this.end++;
  }

  dequeue() {
    if (this.front === this.end) {
      return null;
    }
    const data = this.item[this.front];
    this.front++;
    return data;
  }

  getSize() {
    return this.end - this.front;
  }
}

1 个答案:

答案 0 :(得分:0)

这是Queue Data结构的一个很好的实现,它将解决您的问题。

class Queue {

  constructor() {
    this.first = 0;
    this.last = 0;
    this.storage = {};
  }

  enqueue(value) {
    this.storage[this.last] = value;
    this.last++;
  }

  dequeue() {
    if (this.last > this.first) {
      var value = this.storage[this.first];
      this.first++;
      return value;
    } else {
      return 0;
    }
  }

  size() {
    return this.last - this.first;
  }

}