gpt4 book ai didi

javascript - 为什么在此代码中计数已减少?

转载 作者:行者123 更新时间:2023-12-01 02:57:57 25 4
gpt4 key购买 nike

为什么在这段代码中,在删除存储对象的最后一个元素之前,先递减计数?这样的话,会不会删除倒数第二个元素而不是最后一个元素呢?

var stack = function () {
this.count = 0;
this.storage = {};
this.push = function (value) {
this.storage[this.count] = value;
this.count++;
}
this.pop = function () {
if (this.count === 0) {
return undefined;
}
else {
this.count--;
var result = this.storage[this.count];
delete this.storage[this.count];
return result;
}
}
}

最佳答案

在(大多数)编程语言中,数组是从零开始的。

因此,对于 ['foo'],计数将为 1,但 'foo' 位于索引 0.

因此,数组中的最后一个元素始终位于索引array.length - 1处。

<小时/>

也就是说,如果将 this.storage 设为数组,则可以替换整个 else block 。

由于 this.storage 无论如何都充当数组,因此将其设为数组:

this.storage = [];

然后你可以使用:

else {
this.count--;
return this.storage.pop();
}

Array.prototype.pop从数组中删除最后一个元素,并返回该元素。

关于javascript - 为什么在此代码中计数已减少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46606348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com