**栈**
栈是一种后进先出(LIFO,Last-In-First-Out)的结构,即最近添加的项先被删除;数据项的插入(称为推入,push)和删除(称为弹出,pop)只在栈的一个地方发生,即栈顶。 数组提供了push()和pop()方法,实现类似栈的行为;push()方法接受任意数量的参数,添加到数组末尾,返回数组的最新长度。pop()方法则返回删除数组最后一项,同时减少数组length值,返回被删除项。
使用**push()和pop()方法,创建一个当作栈来使用数组**;
let colors = new Array(); // 创建一个数组
let count = colors.push("red", "green"); // 推入两项
alert(count); // 2
count = colors.push("black"); // 再推入一项
alert(count); // 3
let item = colors.pop(); // 取得最后一项
alert(item); // black
alert(colors.length);// 2
队列
队列以先进先出 (FIFO,First-In-First-Out)形式限制访问。
队列在列表末尾添加数据,但从列表开头获取数据。模拟队列需要数据末尾添加数据的 push() 方法和一个从数组开头取得数据的shift()方法,它会删除数组的第一项并返回它,然后数组长度减1;shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。 push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。 使用shift() 和 push() ,可以把数组当成队列来使用;
var superStar = new Array();
let count = superStar.push("lisa","ANMY");
console.log(count);//2
count = superStar.push("kuafu");
console.log(count);//3
let item = superStar.shift();
console.log(item)//lisa shift()方法它会删除数组的第一项并返回它
console.log(superStar.length) //2 //然后数组长度减1。
还可以**通过使用 unshift() 和 pop()组合** ,可以在**相反方向上模拟队列**,即在数组开头添加新数据,在数组末尾取得数据;
pop() 方法用于删除并返回数组的最后一个元素。
unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
var superStar = new Array();
let count = superStar.unshift("lisa","Anna");
console.log(count); // 2 unshift数组头推入两项
count = superStar.unshift("GD");
console.log(count);//3
let item = superStar.pop(); // pop() 方法用于删除并返回数组的最后一个元素。
console.log(item); //Anna
console.log(superStar.length); //2