Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在这个代码中,为什么计数已递减?_Javascript_Data Structures_Stack - Fatal编程技术网

Javascript 在这个代码中,为什么计数已递减?

Javascript 在这个代码中,为什么计数已递减?,javascript,data-structures,stack,Javascript,Data Structures,Stack,在这个代码中,为什么在删除存储对象的最后一个元素之前先递减计数? 这样,它不会删除最后一个元素而不是最后一个元素吗 var stack = function () { this.count = 0; this.storage = {}; this.push = function (value) { this.storage[this.count] = value; this.count++; } this.pop = function () { if

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

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
块都可以替换

由于
此.storage
以任何方式充当数组,请将其设置为数组:

this.storage = [];
然后您可以使用:

else {
  this.count--;
  return this.storage.pop();
}
从数组中删除最后一个元素,并返回所述元素。

在(大多数)编程语言中,数组是基于零的

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

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


也就是说,如果您将
this.storage
设置为一个数组,则整个
else
块都可以替换

由于
此.storage
以任何方式充当数组,请将其设置为数组:

this.storage = [];
然后您可以使用:

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

从数组中删除最后一个元素,并返回所述元素。

因为数组索引为0,所以第一个元素存储在第0个索引,第二个元素存储在第1个索引,依此类推。

因为数组索引为0,所以第一个元素存储在第0个索引,第1个索引处的第2个,以此类推,计数等于数据结构中第一个空闲位置的索引,然后在当前计数处进行相加,该计数在之后递增,并且通过对称性在之前递减,以指向最后一个被释放的元素,因此,count指向最后一个释放的位置。

count等于数据结构中第一个释放位置的索引,然后在当前计数处进行相加,该计数在之后递增,通过对称性在之前递减,以指向最后一个释放的元素,因此count指向最后一个释放的位置。

,这就是为什么count被初始化为零,这样它就可以抵消这个效果。这就是为什么count被初始化为零,这样它就可以抵消这个效果。