数组 *** 作pop push shift unshift有什么区别

数组 *** 作pop push shift unshift有什么区别,第1张

JS中的数组提供了四个 *** 作,以便让我们实现队列与堆栈!

小理论:

队列:先进先出

堆栈:后进先出

实现队列的方法:

shift:从集合中把第一个元素删除,并返回这个元素的值。

unshift: 在集合开头添加一个或更多元素,并返回新的长度

push:在集合中添加元素,并返回新的长度

pop:从集合中把最后一个元素删除,并返回这个元素的值。

这是原来老赵写的关于数组队列的代码,觉得有点问题,所以改了一下

1 // Usage:装载并运行函数

2 // 队列机制

3 var Resource = (function () {

4 var waitingCallbacks = []

5 var execute = function (cb) {

6 setTimeout(function () {

7 cb(function () {

8 if (waitingCallbacks.length == 0) return

9 execute(waitingCallbacks.shift())

10 })

11 }, 0)

12 }

13 var register = function (cb) {

14 if (waitingCallbacks.length == 0) {

15 execute(cb)

16 } else {

17 waitingCallbacks.push(cb)

18 }

19 }

20 return {

21 register: register,

22 state: 1

23 }

24 })()

原来代码中是

execute(waitingCallbacks.unshift())现在我改成了

execute(waitingCallbacks.shift())当你从集合中执行了函数后,它应该从集合中删除,而不是再添加,呵呵。

有时候项目需要往json加入一些参数。

1.如果是数组Array就可以直接用a.push(xxx) 的方式加入

2.如果是一个集合,就是对象的话[{ aa:11,bb:22},{ aa:11,bb:22}],那么可以用遍历(点xx)的方式添加

这样出来结果就是

队列是常见的使用数组方法之一。在计算机科学中,这表示支持两个 *** 作的一个有序元素的集合:

push 在末端添加一个元素。

shift 取出队列首端的一个元素,整个队列往前移,这样原先排第二的元素现在排在了第一。

这两种 *** 作数组都支持。

队列的应用在实践中经常碰到。例如需要在屏幕上显示消息队列。

数组还有另外一个用例,就是数据结构 栈 。

栈支持两种 *** 作:

push 在末端添加一个元素。

pop 从末端取出一个元素。

所以新元素的添加和取出都是从“末端”开始的。

栈通常被形容成一叠卡片:要么在最上面添加卡片,要么从最上面拿走卡片:

对于栈来说,最后放进去的内容是最先接收的,也叫做 LIFO (Last-In-First-Out) ,即后进先出法则。而与队列相对应的 FIFO (First-In-First-Out) ,即先进先出。

JavaScriptt 中的数组既可以用作队列,也可以用作栈。它们允许你从 首端/末端 来 添加/删除 元素。

在计算机科学中,允许这样 *** 作的数据结构被称为 双端队列。

pop

//取出并返回数组的最后一个元素:

push

//在数组末端添加元素:

调用 fruits.push(...)   与 fruits[fruits.length] = ... 是一样的。

shift

//取出数组的第一个元素并返回它:

unshift

//在数组的首端添加元素:

push 和 unshift 方法都可以一次添加多个元素:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11663258.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存