JS 队列,栈

 
js没有像java中的堆栈,队列的对象类型,只有数组;为了实现类似堆栈,队列的数据模型所以有了一下方法(个人理解,没有参考):
push(),unshift(),pop(),shift()

数组的下标是从起始位置开始到末位[0,n]
1.push()
该方法是在数组末尾添加任意多个元素,并返回添加之后的数组长度;
2.unshift()
该方法是在数组起始位置插入任意多个元素,并返回插入之后的数组长度;
3.pop()
该方法是删除数组末位的一个元素,并返回删除的元素;
4.shift()
该方法是删除数组起始位置的元素,并返回删除的元素;
:任意多个元素是指push或者unshift不一定为一个元素,可以是数组;
arr.push([1,2,3]);
arr.unshift([1,2,3]);

队列的实现:FIFO(Fist-In-First-Out,先进先出)
1.队尾入队-push();队首出队-shift()
2.队首入队-unshift();队尾出队-pop()
栈的实现:LIFO(Last-In-First-Out,后进先出)
1.栈尾入栈-push();栈尾出栈-pop()
2.栈首入栈-unshift();栈首出栈-shift()
 

 
引用资料-方法性能测试(代码就不贴了,参考链接):
可见,unshift()比push()要慢差不多100倍!因此,平时还是要慎用unshift(),特别是对大数组。那如果一定要达到unshift()的效果,可以借助于Array的reverse()方法,Array的reverse()的方法能够把一个数组反转。先把要放进数组的元素用push()添加,再执行一次reverse(),就达到了unshift()的效果;
reverse()方法性能测试:
 

个人感觉这四个方法是两对(push,pop),(unshift,shift);按照这个组合使用时实现的是栈的模型,所以猜测设计者压根就木有想整出个队列模型,不过应阴差阳错的混搭之后就实现了队列(不是胡整);
 
 
 
 
 
 
 
 
 
 
 

posted @ 2019-04-20 16:51  _dafeng  阅读(90)  评论(0编辑  收藏  举报