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

我的JavaScript实现堆栈中的Peek方法未定义

如何解决我的JavaScript实现堆栈中的Peek方法未定义

我已经在JS中实现了Stack数据结构的一个版本。

这是我的代码

class Stack {
    constructor() {
        this.stack = [];
    };

    push(item) {
        return this.stack.push(item);
    };

    pop() {
        return this.stack.pop();
    };

    peek() {
        return this.stack[this.length - 1];
    };

    isEmpty() {
        return this.length === 0;
    };

    getLength() {
        return this.stack.length;
    };
}

这里所有的东西都可以正常工作,除了peek方法。返回未定义。我不确定为什么。

这就是我的使用方式。

const stack = new Stack();
console.log(` The stack contains : ${stack.getLength()} items`);
stack.push(1);
stack.push(2);
console.log(`The stack contains : ${stack.getLength()} items`);
console.log(stack.peek());

这是输出

The stack contains : 0 items
The stack contains : 2 items
undefined

解决方法

您需要使用this.stack.length而不是this.length

peek() {
    return this.stack[this.stack.length - 1]; 
};

对于所有其他对this.length的引用

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