详解数组的push()、pop()、shift()和unshift()方法


JavaScript的数组是一个拥有堆栈和队列自身优点的global对象。也就是说JavaScript数组可以表现的像栈(LIFO)和队列(FIFO)一样操作。这也是JavaScript数组强大的可操作性的体现。

堆栈和队列

堆栈

堆栈的基本概念
在这里插入图片描述
ECMAScript为数组专门提供了 shift() 和 unshift() 方法,以便实现类似队列的行为。由于 push() 是向数组末端添加数组项的方法,因此要模拟队列只需一个从数组前端取得数组项的方法。实现这一操作的数组方法就是 shift() ,它能够移除数组中的第一个项,同时将数组长度减1,并返回数组的长度,。

顾名思义, unshift() 与 shift() 的用途相反:它能在数组前端添加任意个数组项并返回新数组的长度。因此,同时使用 unshift() 和 pop() 方法,可以从相反的方向来模拟队列,即在数组的前端添加数组项,从数组末端移除数组项。
总结如下:

  1. push()方法可以在数组的末属添加一个或多个元素
  2. shift()方法把数组中的第一个元素删除
  3. unshift()方法可以在数组的前端添加一个或多个元素
  4. pop()方法把数组中的最后一个元素删除

实现类似栈的行为

将push()和pop()结合在一起,我们就可以实现类似栈的行为:

var arr = new Array();
console.log(arr);
//push()在数组的末尾添加一个或多个元素并返回数组的长度
console.log(‘开始入栈’);
arr.push(1);
console.log(arr);//------->1
arr.push(2);
console.log(arr);//------->1, 2
arry.push(3);
console.log(arr);------->1, 2, 3
//pop()删除数组中的最后一个元素,并返回删除的元素
console.log(‘开始出栈,先进后出’);
console.log(arr);
arr.pop();//------->3
console.log(arr);
arr.pop();//------->2
console.log(arr);
arr.pop();//------->1

队列

栈和队列都是动态的集合,在栈中,可以去掉的元素是最近插入的那一个。栈实现了后进先出。在队列中,可以去掉的元素总是在集合中存在的时间最长的那一个。队列实现了先进先出的策略。
队列的基本概念:
在这里插入图片描述

实现类似队列的行为

shift()和push()方法结合在一起,可以像使用队列一样使用数组。即在数组的后端添加项,从数组的前端移除项:

var arr = new Array();
console.log(arr);
//push()在数组的末尾添加一个或多个元素并返回数组的长度
console.log(‘开始入队列);
arr.push(1);
console.log(arr);//------->1
arr.push(2);
console.log(arr);//------->1, 2
arry.push(3);
console.log(arr);------->1, 2, 3
//shift()删除数组中的最后一个元素,并返回删除的元素
console.log(‘开始出队列,先进先出’);
console.log(arr);
arr.shift();//------->1
console.log(arr);
arr.shift();//------->2
console.log(arr);
arr.shift();//------->3
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值