首页 技术 正文
技术 2022年11月15日
0 收藏 521 点赞 4,399 浏览 1495 个字

一、栈方法

ECMAScript数组也提供了一种让数组的行为类似与其他数据结构的方法。具体的来说,数组可以变现的向栈一样,栈就是一种可以限制插入和删除向的数据结构。栈是一种LIFO(Last In First Out先进后出)的数据结构,也就是最新添加的项最早被移出,ECMAScript为数组专门提供了push()和pop()方法,以便实现类似栈的行为。

1、push()方法可以接收任意数量的参数,把它们逐个添加到数组的末尾,并返回修改后数组的长度,代码如下:

<script>
var colors=new Array();
var count=colors.push("red","blue");
alert(colors.toString()); //输出:red,blue
alert(count); //输出2
count=colors.push("black");
alert(count); //输出3
</script>

分析上面的代码发现,每次push完返回的都是最后一次push后数组的长度!

2、pop()方法则从数组末尾移除最后一项,减少数组的length,返回移除的项。代码如下:

<script>
var colors=new Array();
var count=colors.push("red","blue");
var item=colors.pop();
alert(item); //输出:blue
alert(colors.length);//输出:1
</script>

二、队列方法

通过Array类型的push()和pop()方法我们可以模拟栈的后进先出,从上面的代码可以看出,而队列数据结构的访问规则是FIFO(First-In-First-Out,先进先出)。队列在列表的末端添加项,在列表的前端移除项。由于push()是向数组末端添加项的方法,因此要模拟队列只需从数组前端取得项的方法。这个方法就是:

1、shift()   移除数组中的第一项并返回该项,同时数组长度减1 代码如下:

<script>
//利用shift()和push()模拟队列 后面追加元素,前面移出元素
var colors=new Array();
var count=colors.push("red","blue");//推入两项
alert(count); //输出:2
count=colors.push("black");
alert(count); //输出:3
var item=colors.shift();
alert(item);//输出:red
alert(colors.length);//输出:2
</script>

2、unshift()

ECMAScript还为数组提供了一个unshift()方法,顾名思义,该方法与shift()方法刚好相反,他是从顶端添加项,unshift()和pop()方法搭配,可以从反方向来模拟队列。代码如下:

<script>
//利用unshift()和pop()方法模拟反向队列 前面追加元素,后面去除元素
var colors=new Array("red","blue","green");
var count=colors.unshift("blue");
alert(count); //输出:4
alert(colors.toString()); //输出:blue,red,blue,green blue被追加到数组的最前端
var item=colors.pop();
alert(item); //输出:green pop()方法将最后面一项green移出
alert(colors.length); //输出:3
</script>
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,999
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,511
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,357
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,140
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,770
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,848