微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 JavaScript 中创建派生数组类型

如何解决在 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());

说明

  1. 创建一个名为 Queue 的类
  2. constructor 函数内部使用空数组初始化 this.value
  3. 创建一个 enqueue 方法,该方法将在 value 的开头推送提供的值,并最终返回用于链接的类的实例。
  4. 创建一个 dequeue 方法,该方法将从 value 的前面/开头查看一个值,并返回 this 实例。
  5. 创建一个 get 方法来获取队列的更新值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。