栈方法(后进先出)
-
栈是一种 LIFO(Last-In-First-Out,后进先出)的数据结构,也就是最新添加的项最早被移除。而栈中项的插入(叫做推入)和移除(叫做弹出),只发生在一个位置——栈的顶部。ECMAScript 为数组专门提供了 push() 和 pop() 方法,以便实现类似栈的行为。
20150101235414.png
//创建一个空数组
var colors = new Array();
//推入两项
var count = colors.push('red','green');
console.log(colors);//red green
//弹出最后一项
var item = colors.pop();
console.log(colors);//red
//创建一个数组
var colors = ['blue','yellow','green'];
//推入一个值
colors[3]='black';
//用push推入一个值
colors.push('orange');
console.log(colors);//["blue", "yellow", "green", "black", "orange"]
//弹出最后一个值
var cp=colors.pop();
console.log(colors);//["blue", "yellow", "green", "black"]
alert(cp);//orange
以上代码中的数组可以看成是栈(代码本身没有任何区别,而 push() 和 pop() 都是数组默认的方法)。
队列方法
队列数据结构的访问规则是 FIFO(First-In-First-Out,先进先出)。队列在列表的末端添加项,从列表的前端移除项。结合使用 shift() 和 push() 方法,可以像使用队列一样使用数组。
20150101235139.png
var colors = new Array(); //创建一个数组
var count = colors.push("red", "green"); //推入两项
//alert(count); //2
//再添加一个值
count= colors.push('black');
var item = colors.shift();
alert(item);
console.log(colors);
unshift()
ECMAScript 还为数组提供了一个 unshift() 方法。
在数组前端添加任意个项并返回新数组的长度.
因此,同时使用 unshift() 和 pop() 方法,可以从相反的方向来模拟队列,即在数组的前端添加项,从数组末端移除项,如下面的例子所示。
var colors = ['green','blue','yellow'];
var us = colors.unshift('black');
console.log(colors); //["black", "green", "blue", "yellow"]
var p = colors.pop();
console.log(colors); //["black", "green", "blue"]
alert(p);//yellow