如何解决在 JavaScript 中创建派生数组类型
我想基于 JS 数组创建我自己的 JavaScript 队列类型。我希望我的队列实例是 JS 数组的全功能实例。我希望他们有一些额外的方法,从 enq(入队)和 deq(出队)方法开始。由于我不明白的原因,我的第一次尝试失败了。
function makeQueue_attempt_1() {
let prototype = Object.create(Array.prototype);
prototype.enq = Array.prototype.shift;
prototype.deq = Array.prototype.pop;
return Object.create(prototype);
}
问题 1:为什么我的实现不起作用?这是一个好主意还是应该通过其他方法来完成我想做的事情?
问题 2:什么是更好的方法?
解决方法
您可以创建一个名为 Queue
的类或任何您想要的类。您可以在那里实现您的功能。
class Queue {
constructor() {
this.value = [];
}
enqueue(val) {
this.value.push(val);
return this;
}
dequeue() {
this.value.shift();
return this;
}
get() {
return this.value;
}
}
const queue = new Queue();
queue.enqueue(20)
.enqueue(10)
.enqueue(22);
console.log('after enqueued:',queue.get());
queue.dequeue();
console.log('after dequeued:',queue.get());
说明
- 创建一个名为
Queue
的类 - 在
constructor
函数内部使用空数组初始化this.value
。 - 创建一个
enqueue
方法,该方法将在value
的开头推送提供的值,并最终返回用于链接的类的实例。 - 创建一个
dequeue
方法,该方法将从value
的前面/开头查看一个值,并返回this
实例。 - 创建一个
get
方法来获取队列的更新值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。