一,栈方法
ECMAScript 数组提供了一种让数组的行为类似于其他数据结构的方法。
栈是一种LIFO(Last-In-First-Out,即后进先出)的数据结构,也就是最新添加的项最早被移除。而栈中的项的插入和移除,只能发生在栈顶。ECMAScript为数组提供了push()和pop()方法,用以实现类似栈的行为。
push()方法可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后的数组的长度;
pop()方法没有入参,它是从数组末尾移除最后一项,并返回最后移除的项,同时,减少数组的length值。
示例:
//创建一个数组
var colors = new Array();
var count = colors.push("red","green");//推入两项
alert(count);//弹出push推入的返回值 2
alert(colors.length);//弹出数组colors的length值 2
count = colors.push("black");//再推入一项
alert(count);//弹出push推入的返回值 3
alert(colors.length);//弹出数组colors的length值 3
//使用pop方法获取数组的最后一项的值
var last_item = colors.pop();
alert(last_item);// "black"
alert(count);//这个时候的count还是3
alert(colors.length);//数组colors的length值为2
ECMAScript可以将栈方法和数组其他方法连用。
示例:
//创建一个数组
var colors = ["red","blue"];
colors.push("brown");//向数组的末尾推入一项
alert(colors.length);//这个时候数组的length值为3
colors[3] = "black";//将数组的角标为3的位置即数组中第四项设置为“black”
alert(colors.length);//这个时候数组的length值为4
var item= colors.pop();//取得数组最后一项的值
alert(item);//“black”
alert(colors.length);//这个时候数组的length值为3
二,队列方法
栈数据结构的访问规则是LIFO,而队列数据结构的访问规则是FIFO(First-In-First-Out,即先进先出)。队列在列表的末端添加项,从列表的前端移除项。
ECMAScript提供了push()和shift()方法来控制队列的的行为;
push()方法是向列表的末尾添加项(与栈的push方法一样);shift()方法是从列表的最前端移除一项,并返回移除项,同时列表的length减1。
示例:
//创建一个数组
var colors = new Array();
var count = colors.push("red","green");
alert(count);//弹出数组push返回的值 2
alert(colors.length);//弹出数组的length值 2
count = colors.push("black");//向数组末尾再推入一项
alert(count);//这个时候push返回的值为3
alert(colors.length);//这个时候数组的length值为3
var first_item = colors.shift();//取得数组的最前端的值
alert(first_item);//"red" 数组的第一项值变为"green"
alert(colors.length);//这个时候数组的length值为2
ECMAScript还提供了一个unshift()方法;顾名思义,unshift()与shift()的用途相反;unshift()能够从数组的前端添加任意个项并返回新数组的长度。因此,同时使用unshift()和pop()方法,可以从相反的方向来模拟队列。即数组的前度添加项,从数组的末端移除项。
示例:
//创建一个数组
var colors = new Array();
var count = colors.unshift("red","green");//从数组的最前端推入两项
alert(count);//返回数组推入的两项的值 2
count = colors.unshift("black");//再向数组的最前端推入一项
alert(count);//这时数组推入项返回的值为3
var last_item = colors.pop();//取得输入最后一项的值
alert(last_item);//"green"
alert(colors.length);//这个时候数组的length值为2
var first_item = colors.shift();//取得数组最前端的值
alert(first_item);//"black"
alert(colors.length);//这时数组的length值为1