栈方法
- 基本知识
- 栈中的插入: 推入
- 栈中的删除: 弹出
- 都只发生在栈顶
1.push()与pop()
push():接收任意数量的参数,然后添加到数组末尾,并且返回修改数组长度
pop():从数组末尾移除最后一项,减少数组的length值,然后返回移除的项
push()返回的是数字类型,即数组的某一项,而pop()返回的是数组的具体值
实例:
var color = new Array();
var count = color.push("red","blue");
alert(count); //2
count = color.push("black");
alert(count); //3
var count2 = color.pop(); // 移除最后一项
alert(count2); //black
alert(color.length); //2
js中有趣的地方在于,数组是动态的,除了默认的push(),可以直接采用给数组某项赋值来添加新数组
实例:
var color = ["red","blue"];
color.push("black"); //此时color[2] = black
color[3] = "yellow"; //此时color[3] = yellow
PS:以上的方式是采用数组的栈方法(先进后出)
队列方法
前面我们知道push和pop都是操纵的栈顶数据,在队列中就是队尾的数据,那么如果要使用队列的方式,在使用push操纵数组添加最后一项,同时可以使用shift()操纵队列的第一项进行删除操作。当然shift也是会返回该项,并且是数组-1.
实例:
var color = new Array();
color.push('red','blue'); //color[0]=red,color[1]=blue
color.push('black'); //color[0]=red,color[1]=blue,color[2]=black
color.shift(); //删除了color[0]=red,并且返回该项(可以使用alert显示出来)使数组-1
color.length(); //2
非常happy的是,js提供了unshift()这个方法,顾名思义咯,它可以和pop()组成一个反向的队列。当然方向也是反的。
var color = new Array();
color.unshift('red','blue'); //color[0]=red,color[1]=blue
color.unshift('black'); //color[2]=blue,color[1]=red,color[0]=black
重排序法
js提供的重排序法
- reverse():颠倒
- sort()
实例:
var num = [1,2,3,4,5];
num.reverse(); //5,4,3,2,1
alert(num
and then 关于sort方法,默认情况下是升序排列,有趣的是,sort方法不是比较数值大小而是比较字符串,sort方法会把每项数组转化为toString的字符串。
实例:
var num = [0,1,5,10,15];
num.sort();
alert(num); //0,1,10,15,5
因为不是按照数值比较,而是字符串比较,所以5在10和15的后面。
为了解决这个问题,通常在sort中回传入一个比较函数(也只能传如函数)
实例:
function compare(a,b){
if(a>b){
return 1; //把大的放后面
}else if(a<b){
return -1; //把小的放前面
}else{
return 0; //相等位置不变
}
}
var num = [0,1,5,10,15];
num.sort(compare);
alert(num); //0,1,5,10,15
操作方法
js为数组的操纵提供了很多的方法,下面我们来介绍一些常见的
- concat()
该方法的作用是基于原数组生成副本,并根据传来的参数生成新数组。如果参数是非数组,就简单的追加在副本后面,如果参数是另一个数组,就集体添加在副本后面。
实例:
var color = ['red','blue'];
var colors = color.concat('yellow',[1,2]);
alert(colors); //red,blue,yellow,1,2
slice(切片的意思)函数是参数非常有意思的函数,slice可以接收最多两个参数,如果接收一个参数是指从该参数(数组下标)到数组结尾切片,如果是两个,从该参数(数组下标)到另一个参数(明面项数)切片。
实例:
var color = ['red','blue','black','yellow','orange','pick'];
var colors = color.slice(1); //从第一项都最后一项
var colors2 = color.slice(1,4); //从第一项都第四项(这个四不是数组下标的4,而是第四个)
alert(colors); //blue,black,yellow,orange,pick
alert(colors2); // blue,black,yellow