JavaScript中Array类型的使用

Array类型

    ECMAScript数组和其他语言中的数组都是有序列表,但是有以下特性: 
    a.每一项都可以保存任何类型的数据。 
    b.数组的大小是可以动态调整。 
    c.数组的length属性:可读可写,可以通过设置length的值从数组的末尾移除项或向数组中添加新项  

    1) 创建方法 

       1. 使用Array构造函数 
          var arr = new Array(); 
          var arr = new Array(20);  // 预先指定数组的大小 
          var arr = new Array("tom","zs","lisi"); //传入参数 
          注意:new关键字也可以省略,但是尽量不要省略 
       2. 使用数组字面量 
          由一对包含数组项的方括号表示,多个数组项之间用逗号分隔 
          var arr = ["tom","zs","lisi"]; 
          var arr = []            //空数组  

    2) 访问数组元素 

       数组变量名[索引] 
        1.如果索引小于数组的长度,返回对应项的值 
            var arr = ["tom","zs","lisi"]; 
            arr[0] ;        //访问数组中第一个元素,返回值为tom 
                2.如果索引大于数组的长度,数组自动增加到该索引值加1的长度 
            var arr = ["tom","zs","lisi"]; 
            arr[3] ="jacky";    //添加元素,数组长度变为4 
 
        数组最多可以包含4 294 967 295个项  

    3) 检查数组 

        var arr = []; 
        //输出object 
        console.log(typeof(arr));     
        //判断arr是否是数组类型 
        console.log(Array.isArray(arr)); 

    4) 转换数组为字符串 

        数组继承Object方法,并且对这些方法进行了重写 
        toString();        在默认情况下都会以逗号分隔字符串的形式返回数组项 
            例如: 
            var arr = ["tom","zs","lisi"];     
            arr.toString()        //tom,zs,lisi  
            valueOf(); 在默认情况下以数组字面量的方式显示 
            console.log(arr.valueOf()); 
            console.log(arr); 
            俩个输出的结果一样: 
                ["tom","zs","lisi"]; 
        join();    使用指定的字符串用来分隔数组字符串 
            例如: 
            arr.join("||");        //tom||zs||lisi 
 

    5) 栈,队列方法 

        1.栈  LIFO (Last-In-First-Out) 
            push() 可接受任意类型的参数,将它们逐个添加到数组的末尾,并返回数组的长度 
            pop()   从数组的末尾移除最后一项,减少数组的length值,返回移除的项 
        2.队列    FIFO (First-In-First-Out) 
            shift()  移除数组中的第一个项并且返回该项,同时将数组的长度减一。 
            unshift() 在数组的前端起始位置添加任意个项,并返回新数组的长度。 
 

    6) 排序 

       reverse()  反转数组项的顺序 ,方法用于颠倒数组中元素的顺序。
       sort()       
         1.默认排序:该方法会调用每个数组项的toString() 转型方法,然后排序 
         2.自定义排序: 
            a.该方法可以接受一个比较函数作为参数,比较函数有两个参数 ,该函数决定了他的两个参数在排好序的数组中的先后顺序
            b.如果第一个参数应该位于第二个参数之前,返回负数 
            c.如果第一个参数应该位于第二个参数之后,返回正数 
            var arr = [11,5,23,7,4,1,9,1]; 
            console.log(arr.sort(compare)); 
 
            //该比较函数适合于大多数数据类型 ,类似于Java中的比较器
            function compare(v1,v2){ 
                if(v1>v2){ 
                    return -1; 
                }else if( v1<v2){ 
                    return 1; 
                }else{ 
                    return 0; 
                } 
            } 

    7) 操作方法 

        concat()    :先创建当前数组的一个副本,然后将接收到的参数添加到这个副本的末尾,返回副本 
            var arr = ["aa","bb","cc","dd"]; 
            var arr_new = arr.concat("ee","ff");  
            // arr_new = ["aa", "bb", "cc", "dd", "ee", "ff"] 
            // arr不改变,原数组不变 
 
        slice()    :可接受一个或者两个参数(返回项的起始位置,结束位置) ,当没有参数传入的时候,返回整个数组,不会对操作的数组进行修改,如果要修改请使用 splice()
            当接受一个参数,从该参数指定的位置开始,到当前数组末尾的所有项 
            当接受两个参数,起始到结束之间的项,但是不包含结束位置的项 
            例如: 
            var arr = ["aa","bb","cc","dd"]; 
            1.接受一个参数时 
              var arr_new = arr.slice(1); 
                // arr_new = ["bb", "cc", "dd"]; 
                // arr 不改变 
            2.接受两个参数时 
              var arr_new = arr.slice(1,2);     
                // arr_new = ["bb"];  
                // arr不改变 
 
        splice(): 向数组的中插入数据并返回一个数组,该数组中包含从原始数组中删除的项。 
            删除:指定两个参数(删除的起始位置,要删除的项数) 
            插入:指定三个参数(起始位置,0,要插入的项任意数量的项) 
            替换:指定三个参数(起始位置,要删除的项,要插入的任意数量的项) 
 
            例如: 
            var arr = ["aa","bb","cc","dd"]; 
            1.删除 
              var del_arr = arr.splice(1,2); 
                // arr = ["aa","dd"];     在原数组进行了删除操作 
                // del_arr = ["bb","cc"];返回删除的元素数组 
            2.插入 
              var del_arr = arr.splice(1,0,"ee","ff"); 
                // arr =  ["aa", "ee", "ff", "bb", "cc", "dd"] 将指定项插入到1位置处 
                //del_arr = [], 返回空数组 
            3.替换 
              var del_arr = arr.splice(1,2,"ee","ff"); 
                // arr =  ["aa", "ee", "ff", "dd"] 将"bb","cc" 替换成了"ee","ff" 
                //del_arr = ["bb", "cc"], 返回删除的元素数组 
 
        indexOf()(要查找的项,开始查找的位置(可选)) 从数组开头向后查找,使用全等操作符,找不到该元素返回-1 
            var arr = ["22","11","cc","dd","11"]; 
            arr.indexOf(11); //返回-1,因为内部使用"==="进行匹配 
            arr.indexOf("11"); //返回1,默认从下标为0往后匹配,返回第一个匹配元素的位置 
            arr.indexOf("11",2); //返回4,从下标为2开始往后匹配,返回第一个匹配元素的位置 
        lastIndexOf()(要查找的项,开始查找的位置(可选)) 从数组末尾向前查找,使用全等操作符,找不到该元素返回-1 
            var arr = ["22","11","cc","dd","11"]; 
            arr.lastIndexOf("11"); //返回4,默认从下标为4往前匹配,返回第一个匹配元素的位置 
            arr.lastIndexOf("11",2); //返回1,从下标为2往前匹配,返回第一个匹配元素的位置 

    8) 迭代方法: 

        every();对数组中的每一元素运行给定的函数,如果该函数对每一项都返回true,则返回true 
            every(回调函数) 
            every(function(){}) 
            every(function(item,index,arr){}) 
            every(function(遍历的每项,索引,被遍历的数组){}) 
 
            var arr = [11,5,23,7,4,1,9,1]; 
            var result = arr.every(function(item,index,arr){ 
                return item >2; 
            }); 
            console.log(result); //false 
 
        some(); 对数组中的每一元素运行给定的函数,如果该函数对任意(也就是至少有一项符合条件)一项返回true,则返回true 
            some(回调函数) 
            some(function(){}) 
            some(function(item,index,arr){}) 
            some(function(遍历的每项,索引,被遍历的数组){}) 
             
            var arr = [11,5,23,7,4,1,9,1]; 
            var result = arr.some(function(item,index,arr){ 
                return item >2; 
            }); 
            console.log(result); //true 
 

        filter();对数组中的每一元素运行给定的函数,会返回满足该函数的项组成的数组 。

注意: filter() 不会改变原始数组。不会对空数组进行检测。

 

libs.filter(lib => lib.name === remoteName);

如上面使用箭头函数进行举例,将会保留libs中属性name和remoteName相同的lib对象

 

            filter(回调函数) 
            filter(function(){}) 
            filter(function(item,index,arr){}) 
            filter(function(遍历的每项,索引,被遍历的数组){}) 
 
            var result = arr.filter(function(item,index,arr){ 
                return item >2; 
            }); 

            console.log(result); // [11, 5, 23, 7, 4, 9] ,

 

        map();对数组中的每一元素运行给定的函数,返回每次函数调用的结果组成的数组 

注意: map() 不会改变原始数组。不会对空数组进行检测。

            map(回调函数) 
            map(function(){}) 
            map(function(item,index,arr){}) 
            map(function(遍历的每项,索引,被遍历的数组){}) 
 
            var result = arr.map(function(item,index,arr){ 
                return item * 2; 
            }); 
            console.log(result); // [22, 10, 46, 14, 8, 2, 18, 2] 
 
        forEach();对数组中的每一运行给定的函数,没有返回值,常用来遍历元素 
             
            forEach(回调函数) 
            forEach(function(){}) 
            forEach(function(item,index,arr){}) 
            forEach(function(遍历的每项,索引,被遍历的数组){}) 
 
            var result = arr.forEach(function(item,index,arr){ 
                console.log(item); 

            }); 

        reduce
       从数组的第一项开始,逐个遍历到最后,函数接受两个参数,一个是在数组上调用的函数和归并的初始值(可选),而调用数组的函数接受四个参数:前一个值、当前值、当前值索引、当前数组,第一次调用时,前一个值是数组第一项,当前值是数组第二项
其原型结构为:

 

array.reduce(callback, [initialValue]),
参数一表示:执行数组中每个值的函数,函数包含四个参数

       var arr = [1,2,3,-1];
       var result = arr.reduce(function(prev,cur,index,array){
           return prev+cur
        })
        alert(result);//返回5

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

suwu150

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值