关闭

js入门(四)——数组

177人阅读 评论(0) 收藏 举报
分类:

数组

        类似于java中的数组,但长度可变,元素类型可不相同。它也属性引用数据类型,typeof(new Array())返回的是object。

定义

        有两种定义方式,如下:

        /*
        此种方式不推荐
        var a1 = new Array();
        a1[3] = 3;
        */
    	var a =[1,3,true,"fdafa"];//类型可不同,用[]
        a[4] = "这是第四个"//长度可变,
        alert(a[4]);

方法与属性

        length:属性,获取数组当前长度。如果数组当前的长度大于设置的length的值,那么会将超过的部分直接舍弃。

        push():将参数添加到数组尾部,参数可以为多个。新添元素的下标依当前元素的下标往后增加。其返回值为添加元素后数组的长度。如原数组长度为2,push了3个元素,则push的返回值是2+3=5。

        unshift():将参数添加到数组头部,参数可以为多个。并返回添加元素后数组的长度。

        pop():移除数组中最后一个元素,并将该元素返回。无参数。

        shift():与pop相反,移除数组中第一个元素,并将该元素返回。

        splice():用指定的参数代替原数组中的指定长度的元素。该方法操作数组本身,即:调用该方法后,数组会变化。第一个参数表示原数组中要被代替的元素的起始下标(含);第二个参数表示要被代替的元素的长度。第三个及以后的元素表示代替内容。如

    	var a =[1,3,true,"fdafa"];
        alert(a);
        a.splice(1,3,"第二个","text",false,1);
        alert(a);//1,"第二个","text",false,1
        第一个参数表示要从a中的第二个元素(3)开始代替,3表示一共要代替到a中的3个元素。"第二个"及以后各个参数表示代替原元素的元素。所以输出的结果为:1,"第二个","text",false,1

        如果splice()只有两个参数,那么该方法就相当于将原数组中指定位置的元素给删除(因为没有替代它们的元素)。如上面a.splice(1,2)那么输出结果为:1,"fdada"。

        如果只有一个参数,那指的是将指定开始位置(含)后的所有元素都删除,因为没有指定要替代的长度及要替代的元素。
        slice():截取数组中某两个下标之间的元素,第一个参数为起始下标(含),第二个参数为结束下标(不含)。该方法并不操作数组本身,即经过该方法截取后,数组还是原来的样子。该方法的返回值就是截取到的元素。

        concat():将参数中的所有元素合并到原数组末尾。该方法不操作数组本身(原数组与参数数组的元素不会发生变化),只是将合并后的结果返回

        join(String):用于把数组中的所有元素放入一个字符串,元素是通过指定的参数进行分隔的;如果没有传参数,默认使用逗号进行分隔。返回值为string。

        reverse():将数组中的元素反转,操作数组本身。

        sort():将数组中的元素进行排序。操作数组本身。排序规则为:将每一个元素当作字符串,再将元素按各个字母进行比较排序。如

    	var a =[true,3,1,"fdafa","yes",10];
        a.sort();
        alert(a);//1,10,3,fdafa,true,yes
        因为10的第一个字母是1,比3小,所以10排在3的前面。fdada的第一个字母为f,比true的第一个字母小,所以fdada排在true前,而true又排在yes前。

        可以将自己写的排序方法传入到sort()中,这样sort的排序规则便是自己写的方法中定义的。

        indexOf():一个参数时:查询该参数在数组中的下标,并将下标值返回。两个参数时:第一个参数表示要查找的元素,第二个参数表示查询哪个下标之后的元素(含)。在元素比较时, 使用的是===,如果没有要查询的元素,返回-1。如:

    	var a =[true,3,1,"fdafa","yes",10,3];
        var result = a.indexOf(3,2);//结果为6.如果将2换成1,那么结果为1。
        alert(result);
        lastIndexOf():同java,查询数组中最后一个该元素的下标。

        every():对数组中的每一个元素进行指定的函数操作。如果每一个元素都返回true,那么every方法返回true;否则返回false

        some():类似于every(),但只要有一个元素返回true,该方法就会返回true,否则返回false。

        filter():过滤。遍历数组,对每一个元素执行指定的方法,并将函数返回为true的元素保留到新数组中,最后将新数组返回。

        forEach():遍历。遍历数组,并对每一元素执行指定方法。无返回值,且不操作数组本身。

        map():映射。遍历数组,并对每一个元素执行指定的方法,将方法返回值存储到新数组中,并且将新数组返回。

    	var a =[4,5,66];
        var result = a.map(function(value,index,array){
            return value * 2;
        });
        alert(result);
        map的参数便是指定的方法,它的参数是固定的。第一个指当前元素,第二个指元素的下标,第三个指元素所在的数组。上面的every,some,filter,forEach中方法的写法同map中一样。

        reduce()与reduceRight():遍历数组,只不过后面一个是从右往左遍历。其返回值为最后一个元素时方法的返回值。如:

    	var a =[4,5,66];
        var result = a.reduce(function(pre,cur,index,array){
            return pre*2+cur;
        });
        alert(result);//result = 92。
        reduce()参数的格式固定。第一个参数为当前元素的前一个元素(当前元素的前一个元素在函数中的返回值,并不是前一个元素本身),第二个参数为当前元素,第三个为下标,第四个为数组。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:12994次
    • 积分:735
    • 等级:
    • 排名:千里之外
    • 原创:64篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类