我知道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;
}
}
答案 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;
}
}