栈方法
ECMAScript中数组提供了一种让数组的行为类似于其他数据结构的方法。栈是一种LIFO(后进先出)的数据结构,也就是最后插入的数据最先被移除。栈中的插入(叫推入)和移除(叫弹出)只发生在一个位置,就是栈的顶部。ECMAScript为数组专门提供了push()和pop()方法,以便实现类似栈的行为。
push()方法可以接收任意的参数,把它们逐个插入到数组的末尾,并返回修改后数组的长度。而pop()方法则从最后一项开始移,除减少数组的length值,然后返回被移除的项。如下代码实例:
<script type="text/javascript"> var colors = new Array(); var cont = colors.push("red","black"); document.write(cont); //2 var cont = colors.push("green"); document.write(cont); //3 var item = colors.pop(); document.write(item); //green </script>
队列方法
栈结构的访问规则是LIFO(后进先出),而队列的访问规则则是FIFO(先进先出)。队列在列表的末尾添加项,在列表的前端移除项。前面已经了解到数组的push()方法是向数组的末尾追加项,现在是只需要一个方法实现从数组的前端移除项就可以实现数组模拟队列方法了。ECMAScript提供了shift()方法实现这一操作。shift()方法能够移除数组的最先插进去的项(也可以说是第一项)并返回该项,同时数组长度减1,结合push()和shift(),就可以实现数组模拟队列操作了。如下代码实例:
<script type="text/javascript"> var colors = new Array(); var cont = colors.push("red","green"); document.write(cont); // 2 var item = colors.shift(); document.write(item); // green var num = colors.length; document.write(num); //1 </script>
ECMAScript还为数组提供了一个unshift()方法,顾名思义,这个方法的功能和shift()正好相反,它可以在数组的最前面插入任意个数组项并返回新数组的长度。同时使用unshfit()和pop()可以从相反的方向来模拟队列。