JavaScript Array类型具有的方法(二)

来自 《JavaScript高级程序设计(第三版)》

输入提取码 herm ->获取本书

2.栈方法

  我们都知道,C++里面有一种数据结构叫栈(Stack),它是一种线性存储结构,特点有以下几个:数据元素遵循着 先进后出(First In Last Out) 的原则;只能在栈顶进行插入、删除等操作。栈中项的插入(叫做推入)和移除(弹出)只发生在一个位置——栈的顶部。在JS中,为数组专门提供了push()和pop()方法,以便实现类似栈的行为。

  push()方法可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度,而pop()方法则从数组末尾移除最后一项,减少数组的length值,然后返回移除的项(移除并返回)。请看下面的例子。

var colors = new Array();    //创建一个数组
var count = colors.push("red","green");    //推入两项
alert(count);    //2

count = colors.push("black");    //推入另外一项
alert(count);    //3

var item = colors.pop();    //删除并取得最后一项
alert(item);    //"black"
alert(colors.length);    //2

  我们也可以将栈方法与其他数组方法连用。请看下面这个例子。

var colors = ["red","blue"];
colors.push("brown");    //添加另一项
colors[3] = "black";    //添加一项
alert(colors.length);    //4

var item = colors.pop();    //取得最后一项
alert(item);    //"black"

3.队列方法

  与栈方法类似,C++中也有队列(Queue),特点是:先进先出(FIFO)。队列在列表的末端添加项,从列表的前端移除项。由于push()是向数组末端添加项的方法,因此要模拟队列只需一个从数组前端取得项的方法。实现这一操作的数组方法就是shift(),它能够移除数组中的第一个项并返回该项,同时将数组长度减一。结合使用shift()和push()方法,可以像使用队列一样使用数组。请看下面的例子。

var colors = new Array();    //创建一个数组
var count = colors.push("red","green");    //推入两项
alert(count);    //2

count = colors.push("black");    //推入另一项
alert(count);    //3

var item = colors.shift();    //取得第一项
alert(item);    //"red"
alert(colors.length);    //2

  另外,还提供了一个unshift()方法,顾名思义unshift()方法与shift()方法用途相反:它能够在数组前端添加任意个项并返回新数组的长度。因此,同时使用unshift()方法和pop()方法,可以从相反的方向模拟队列,即在数组的前端添加项,从数组末端移除项。请看下面的例子。

var colors = new Array();    //创建一个数组
var count = colors.unshift("red","green");    //推入两项
alert(count);    //2

count = colors.unshift("black");    //推入另一项
alert(count);    //3

var item = colors.pop();    //取得最后一项
alert(item);    //"green"
alert(colors.length);    //2

(IE7及更早版本对JavaScript的实现中存在一个偏差,其unshift()总是返回undefined而不是数组的新长度。)


扫描二维码关注公众号,回复: 6011964 查看本文章

猜你喜欢

转载自www.cnblogs.com/bardzx/p/10767871.html