js高级教程 第五章-引用类型(中)

栈方法

  • 基本知识
    • 栈中的插入: 推入
    • 栈中的删除: 弹出
    • 都只发生在栈顶

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为数组的操纵提供了很多的方法,下面我们来介绍一些常见的

  1. 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
原文地址:https://www.cnblogs.com/comefuture/p/8305958.html