zoukankan      html  css  js  c++  java
  • 5.2 Array类型

    ◆  创建数组的基本方式有两种。

    ①第一种是使用Array构造函数,new关键字可省略

    var colors = new Array();
    
    var colors = new Array(20);  //length值为20
    
    var colors = new Array("red","blue","black");

    ②第二种是使用字面量表示法

    var colors = ["red","blue","black"];
    var emptyArr = [];  //空数组


    ◆  读取和设置数组的值

    var colors = ["red","blue","green"];
    alert(color[0]);        //显示第一项
    color[2] = "green"      //修改第三项
    color[3] = "pink"       //增加第四项


    ◆  length属性,可以通过设置该属性移除或添加数组中的项目

    利用length属性可以在数组末尾添加项: colors [ colors.length ] = "white"

    最后一项的索引是length-1


    ◆检测数组

    instanceof()

    Array.isArray()方法 


    ◆栈方法 (LIFO)

    Last-In-First-Out 后进先出的数据结构,最新添加的项最早被移除。push()和pop()方法。

    push()方法可以接受任意数量的参数 ,把他们逐个添加到数组末尾,并返回修改后数组的长度。而pop()方法则移除数组最末尾的一项,返回移除的项。

    		var color= new Array();
    		var count=color.push("red","green");
    		alert(count);   //2
    
    		count = color.push("black");
    		alert(count);   //3
    		document.write(color);   //red,green,black
    
    		
    		var item = color.pop();
    		alert(item);	//black
    		document.write(color);   //red,green


    ◆队列方法(FIFO)

    队列在列表的末尾添加项,从列表的前端移除项。push()方法和shift()方法

    push()向数组末端添加项,shift移除数组中的第一个项并返回该项。

    unshift()方法跟shift()方法相反,它在数组前端添加任意个项返回该新数组的长度。


    ◆重排序方法 :reverse() 和 sort()

    reverse()方法会反转数组项的顺序。

    var values = [1,2,3,4,5];
    values.reverse();
    alert(values);  //5,4,3,2,1

    sort()方法按会调用每个数组项的toString()转型方法,然后比较得到的字符串,再从小往大排。

    var values = [0,1,5,10,15];
    values.sort();
    alert(values);  //0,1,10,15,5

    很多sort()方法接收一个比较函数作为参数,如:

    function compare(value1,value2){
    	if(value1<value2){
    		return -1;
    	}else if(value1>value2){
    		return 1;
    	}else{
    		return 0;
    	}
    }

    把上面的比较函数作为参数传递到sort()方法:

    var values = [0,1,5,10,15];
    values.sort(compare);
    alert(values);  //0,1,5,10,15


    交换比较函数返回的值可以产生降序排序的结果。

    function compare(value1,value2){
    	if(value1<value2){
    		return 1;
    	}else if(value1>value2){
    		return -1;
    	}else{
    		return 0;
    	}
    }
    var values = [0,1,5,10,15];
    values.sort(compare);
    alert(values);  //15,10,5,1,0





    concat()方法

    这个方法会创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新数组。没有传递参数的情况系 ,它只是复制当前数组并返回副本。

        var color = ["red","green","blue"];
        var color2 = color.concat("yellow",["black","gray"]);
        alert(color2); //red,green,blue,yellow,black,gray

     

    slice()方法

    这个方法可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,返回起始和结束位置之间的项(不包括结束位置的项),slice()方法不会影响原始数组。

    var color = ["red","green","blue"];
    var color2 = color.slice(1);
    var color3 = color.slice(0,2);
    alert(color2);  //green,blue
    alert(color3);	//red,green
    alert(color);	//red,green,blue

     

    splice()方法

    有很多种用法,主要用途是向数组的中部插入项。

    -删除:指定2个参数,要删除的第一项的位置,要删除的项数。

    var color = ["red","green","blue"];
    var color2 = color.splice(0,1);
    alert(color2);  //red  
    alert(color);	//green,blue

     

    -插入:指定3个参数,起始位置,0(要删除的项数),要插入的项。

    var color = ["red","green","blue"];
    var color2 = color.splice(1,0,"yellow","pink","black"); //在位置1前插入
    alert(color2);  //没有删除项,所以返回一个空数组  
    alert(color);	//red,yellow,pink,black,green,blue

     

    -替换:指定3个参数,起始位置,要删除的项,要插入的项。

    var color = ["red","green","blue"];
    var color2 = color.splice(1,2,"yellow","pink","black");
    alert(color2);  //green,blue 
    alert(color);	//red,yellow,pink,black

     


    indexOf()方法 和 lastIndexOf()方法

    这两个方法从接收两个参数:要查找的项,表示查找起点位置的索引(可选)。indexOf()方法从数组的开头向后查找,lastIndexOf()方法则从数组的末尾向前查找。

    这两个方法都返回要查找的项在数组中的位置,没找到的情况下返回-1.

    var color = ["red","green","blue"];
    
    alert(color.indexOf("green"));  //1
    alert(color.indexOf("green",2))	//-1 找不到,返回-1
    
    alert(color.lastIndexOf("red")); //0
    alert(color.lastIndexOf("green",0)) //-1

     



    迭代方法:ECMAScript5为数组定义了5个迭代方法。每个方法都接收两个参数:要在每一项上运行的函数,运行该函数的作用域对象(可选)

        而传入这些方法中的函数会接收三个参数:数组项的值,该项下数组中的位置,数组对象本身

        every():检测数组中的每一项是否符合条件,每一项都返回true,则返回true 

    var num = [1,2,3,4,5];
    var result = num.every(function(item,index,array){
    	return(item > 0);
    });
    alert(result); //true

     

       

         some():检测数组中的某一项是否符合条件,只要某一项返回true,则返回true

    var num = [1,2,3,4,5];
    var result = num.some(function(item,index,array){
    	return(item > 4);
    });
    alert(result); //true

     


        filter():筛选出数组中符合条件的项,即返回true的项,返回这些项组成的新数组

    var num = [1,2,3,4,5];
    var result = num.filter(function(item,index,array){
    	return(item > 2);
    });
    alert(result); //3,4,5

     

        

        map():对数组的每一项运行传入的函数,对应项得出的结果产生一个新数组

    var num = [1,2,3,4,5];
    var result = num.map(function(item,index,array){
    	return (item * 2);
    });
    alert(result); //2,4,6,8,10

     

        

        forEach():对数组中的每一项运行传入的函数。没有返回值,本质上与使用for循环迭代数组一样

    var num = [1,2,3,4,5];
    var result = num.forEach(function(item,index,array){
    	return (item);
    });
    alert(result); //undefined

     



    两个缩小数组的方法:reduce() 和 reduceRight()方法

    这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。reduce()方法从数组的第一项开始,逐个遍历到最后,reduceRight()方法则从数组最后一项开始往前遍历到第一项。

    这两个方法都接收两个参数:一个在每一项调用的函数,作为缩小基础的初始值(可选)

    调用的函数接收4个参数:前一个值,当前值,项的索引,数组对象

    var num = [1,2,3,4,5];
    var result = num.reduce(function(prev,cur,index,array){
    	return (prev*cur);
    });
    alert(result); //120 =1*2*3*4*5

     

    reduceRight()的作用类似,不过方向相反而已。



  • 相关阅读:
    模拟登入教务处(header)
    Hash开散列 拉链法
    struts2--上传总结(限制大小和类型 非法上传的跳转)
    struts2--文件上传大小
    struts2--文件上传类型3
    Struts文件上传allowedTypes问题,烦人的“允许上传的文件类型”
    毕业设计论文撰写指南(06)—— 第四章 ***系统分析与结构设计
    毕业设计论文撰写指南(05)—— 第三章 ****系统需求分析
    毕业设计论文撰写指南(04)—— 第二章 相关技术
    毕业设计论文撰写指南(03)—— 第一章 引言
  • 原文地址:https://www.cnblogs.com/afighter/p/5447995.html
Copyright © 2011-2022 走看看