认真对待数据结构
Abiee,我在互联网上搜索 “JavaScript 数据结构与算法”时,浏览过不少随意介绍数据结构的内容。比如一个队列:const queue = [],入队 queue.push(value),出队 const value = queue.shift()。这俨然是一种轻浮。
我们可以理所当然地用数组去构建队列,上述例子也没有功能错误,但我要提出两点糟粕:语义与阅读、IDE 提示。在语义与阅读上,我们构建出来的数据依然是数组,它可以使用数组本就存在的任意方法,push 和 shift 只是恰巧满足需要。IDE 的编码提示也是如此,它会从上下文得知,我们在操作数组。
请各位回过头来再读这句短语“数据结构与算法”,我们是在跟数据结构打交道,数组或队列都是数据结构中的一种,队列同样值得认真对待,每一种数据结构都应该认真对待。在 JavaScript 中,数组有一种创建方式是使用构造器,所以,我们也为队列编写一个类,以下是我的参考代码:
class Queue {
constructor() {
this.items = [];
}
enqueue(value) {
this.items.unshift(value);
}
dequeue() {
return this.items.pop();
}
clear() {
this.items = []
}
toArray() {
return this.items.slice();
}
isEmpty() {
return this.items.length === 0;
}
size() {
return this.items.length;
}
}