zoukankan      html  css  js  c++  java
  • js中数组的方法

    一、ECMScript 3中数组的操作方法

        1.push和pop

          push在数组的末尾添加一个或者多个元素,返回新数组的长度。所以不能链式操作
          pop删除数组的最后一个元素,返回它删除的值元素

    var arr = [1, 2, 3, 4, 5];
    var arr1=arr.push(6);
    console.log(arr1)//6
    console.log(arr)//[1,2,3,4,5,6]
    var arr2 = arr.pop();
    console.log(arr2)//6
    console.log(arr);//[1,2,3,4,5]

       2.unshifh和shift

       unshift是在数组头部添加一个或多个元素。如果一次性传入多个参数,多个参数按照按照原先的位置直接加到数
       组中。返回新数组的新数组的长度。
       shift:删除数组的第一个元素,并返回删除的元素

    var arr = [1, 2, 3, 4, 5];
    var arr1=arr.unshift(6);
    console.log(arr1)//6
    console.log(arr)//[6,1,2,3,4,5]
    var arr2 = arr.unshift();
    console.log(arr2);//6
    console.log(arr);//[1,2,3,4,5]

      3.concat

       concat 连接 该方法的作用是给数组连接新成员 参数有任意个,都是会被拼接到新数组中的成员 如果参数中有数组 会把这个数组拆开

        返回值是连接完毕的新数组,它不会改变原来的数组
     var arr = [1];
     var arr1 = [2, 3];
      // 把arr 和 arr1 连接起来
      var arr2 = arr.concat(10, 20, 33, arr1);
      console.log(arr2);//[1,10,20,33,2,3]

      4.reverse

        将一个数组逆序 返回值是原数组 也会影响到原数组

     var arr = ["a", "b", "c", "d", "e"];
     var arr1 = arr.reverse();
     console.log(arr);//["e", "d", "c", "b", "a"]
     console.log(arr1);//["e", "d", "c", "b", "a"]

    5.sort

      排序

      该方法只适用于内部成员都是数字的情况
           var arr = [1, 11, 44, 4, 5, 67, 6, 78, 345, 89, 8];
            //如果不传递参数 会按照第一位数的数字从小到大排序
            arr.sort();
            console.log(arr);//[1, 11, 345, 4, 44, 5, 6, 67, 78, 8, 89]
            //如果传递参数 参数是一个函数 该函数有两个参数 a b 如果返回a - b 则升序排列 如果 
            返回b - a则降序排列
            arr.sort(function(a, b) {
                return b - a;
            });
            console.log(arr);//[345, 89, 78, 67, 44, 11, 8, 6, 5, 4, 1]

    6.join

         该方法用于将数组以参数作为间隔转换成字符串
          参数默认是 ","
     var arr = [1, 2, 3, 4, 5, 6, 7, 8];
     console.log(arr.join(""));//12345678
            

    7.slice(start,end)

       该方法用于截取一段数组中的成员
                    start: 开始截取的下标位置
                    end: 结束截取的下标位置(不包含)
                    左闭右开:包含左侧 不包含右侧
                   可以接收一个参数 表示从start截取到最后
                可以不接收参数 表示全部截取
                参数可以是负数 表示从后往前数(负数是从-1开始)
                如果第一个参数比第二个参数要大 截取的是空数组

     

      var arr = [1, 2, 3, 4, 5, 6, 7, 8];
      var arr1 = arr.slice(2, 6); // [3, 4, 5, 6]
       var arr2 = arr.slice(2);  // [3, 4, 5, 6, 7, 8]
       var arr3 = arr.slice(); // [1, 2, 3, 4, 5, 6, 7, 8]
       var arr4 = arr.slice(0, -1);  // [1, 2, 3, 4, 5, 6, 7];
        var arr5 = arr.slice(-4, -1); // [5, 6, 7]
        var arr6 = arr.slice(-4);  // [5, 6, 7, 8]

    8.splice

         splice(pos, num, ...) 该方法用于操作数组
                    pos: 表示操作数组的位置
                    num: 表示要删除几项
                    之后的每一个成员表示要向pos位置插入的成员
     var arr = [1, 2, 3, 4, 5, 6, 7, 8];
            //1 将3移除
            var result = arr.splice(2, 1);
            console.log(arr);
            console.log(result);
           // 2 将3替换成9
            var result = arr.splice(2, 1, 9);
            console.log(arr);
            console.log(result);
            //3 在5前面插入5个1
            var result = arr.splice(4, 0, 1, 1, 1, 1, 1);
            console.log(arr);
            console.log(result);
            //4 当都只传递1个参数时 默认从该位置往后都移除
            var result = arr.splice(1);
            console.log(arr);
            console.log(result);

     二、ECMScript 5中的数组方法

     1、forEach()  //遍历
    该方法从头到尾遍历数组,为某个元素调用指定的函数。传递函数包括三个参数(数组元素、元素索引、数组本身
    ),如果只关心数组元素的值,可以只传一个参数。
    注意:无法在所有元素的都传递给调用函数之前提前结束。也就是没有像for中一样的break语句。如果要提交终止,可以
    把forEach()方法放到try块中。如果forEach()调用的函数抛出forEach.break异常,循环提前结束

    var data = [1,2,3];
    var sum = 0;
    data.forEach(function(value){
      sum+=value;
    });
    console.log(sum);  //6
     
    var data = [10,20,30];
    data.forEach(function(v,i,a){
      a[i] = v*2;
    });
    console.log(data) //[20, 40, 60]

    2、map()     //映射
    定义:将调用的数组的每个元素传递给指定的函数,并返回一个新数组,它包含该该函数的返回值
    注意:传递给map的函数应该有返回值,返回的是新数组,不修改调用的数组。

    var data3 = [1,2,3];
    var b = data3.map(function(val){
       return   val*10;
    });
    console.log(data3);  //[1,2,3]     不改变原数组
    console.log(b);      //[10,20,30]  新数组

    3、filter() //过滤
    定义:返回的数组元素是调用的数组的一个子集,就传递的函数是用来做逻辑判定的,返回true,传给给判定函数的元素就是这个子集的成员。

    var data4 = [1,2,3,4,5];
    var b2 = data4.filter(function(val){
      return val<3;
    });
    console.log(b2);     //[1,2]
    console.log(data4);  //[1,2,3,4,5] 不改变原数组  
     
    var b3 = data4.filter(function(val,i){
      return i%2;
    });
    console.log(b3);     //[2,4] 返回索引为奇数的元素组成的数组

    4、every() 

      every 该方法也是断言方法 用于判定数组中是否有存在符合某种条件的成员
                    接收一个函数作为参数
                        函数的第一个参数是成员 
                        函数的第二个参数是索引
                        函数的第三个参数是数组本身
                        函数要有返回值 通常是符合某种条件的判定表达式
                    返回值是一个布尔值 只要有任何一个成员不符合函数的描述 就返回假 都符合才返回真
     var arr = [1, 2, 3, 4, 5, 6, 7];
    
            var result = arr.every(function(value, index, self) {
                return typeof value === "number";
            });
            console.log(result);//true

    5.some()

    some 该方法属于断言方法 用于判定数组中是否有存在符合某种条件的成员
                    接收一个函数作为参数
                        函数的第一个参数是成员 
                        函数的第二个参数是索引
                        函数的第三个参数是数组本身
                        函数要有返回值 通常是符合某种条件的判定表达式
                    返回值是一个布尔值 只要有任何一个成员符合了函数的描述 就返回真 都不符合才返回假
         var arr = [1, 2, 3, 4, 5, 6, 7, 8];
             var result = arr.some(function(value, index, self) {
                console.log(value);
                return typeof value === "string";
             });
             console.log(result);//false

    6、reduce()
    定义:使用指定的函数将数组元素进行组合,生成一个单值。参数一是执行简化操作的函数,参数二是传给简化函数的初始值。

    注意:一旦确认之后,就停止遍历数组了。

    var data5 = [1,2,3];
    var sum = data5.reduce(function(x,y){
      return  x+y;
    },0);
    console.log(sum);  //6
     
    var product = data5.reduce(function(x,y){
      return  x*y;
    },100);
    console.log(product);  //600

    7、indexOf()和lastIndexOf()

    定义:搜索整个数组中具有给定值的位子,返回找到第一个元素的索引,如果没有找到就返回-1;indexOf()是从头找到尾,lastIndexOf()正好相反
    注意:不接受函数作为参数,第一个参数是需要搜索的值,第二个参数是可选的,表示从哪里搜索,可以是负数,表示相对数组末尾的偏移量。
    说明:字符串也有这两个方法,功能类似。

    var data6 = [1,2,3,3,4,3,5];
    console.log(data6.indexOf(3)); //2 第一个3的索引是2

     8.fill()

    fill 用于填充数组 接收3个参数 
                    第一个参数是 填充数
                    第二个参数是 填充的起始位置(可选)
                    第三个参数是 填充的结束位置(可选)
     var arr = [1, 2, 3, 4, 5, 6];
            // 将数组的每一个成员都填充为0 
            arr.fill(0); 
            // 将数组的从第二个开始往后都填充为0 
             arr.fill(0, 1);
            // 将数组的从第二个开始到第四个填充为0
            arr.fill(0, 1, 4);
            console.log(arr);

    三、ECMScript 6中的数组方法

    1.find()

    find 用于查询数组中的成员 接收一个函数作为参数
       函数有三个参数
      函数的第一个参数是成员
         函数的第二个参数是索引
         函数的第三个参数是数组本身
       该函数返回一个条件表达式
         返回符合函数条件表达式描述的第一个数组成员 如果找不到 返回undefined
           var arr=["12","23","345","45"]
                    var result = arr.find(function(value,index,self){
                            return value.indexOf(23) !=-1;
                    })
                    console.log(arr)//["12","23","345","45"]
                     console.log(result)//23

    2.findIndex()

          findIndex 用于查询数组中的成员的索引 接收一个函数作为参数
                    函数有三个参数
                        函数的第一个参数是成员 
                        函数的第二个参数是索引
                        函数的第三个参数是数组本身
                        该函数返回一个条件表达式 
                    返回符合函数条件表达式描述的第一个数组成员的索引 如果找不到 返回 -1
         
         var arr = ["张三", "李四", "王五", "赵六", "田七"];
            
            var usernameIndex = arr.findIndex(function(value, index, self) {
                return value.indexOf("五") != -1;
            });
             console.log(usernameIndex)//2

    3.copyWithin()

    copyWithin 负责数组的内部复制 接收三个参数
                    第一个表示操作位置
                    第二个表示复制的开始位置(包含)
                    第三个表示复制的结束位置(不包含)
                    操作结果: 从第二个参数开始复制到第三个参数 再将复制的成员 从第一个参数位置开始替换
        
    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
            arr.copyWithin(0, 5, 7);
            console.log(arr);//[6, 7, 3, 4, 5, 6, 7, 8, 9]

    4.Array.of() 

    该方法用于定义数组
    与new Array()不同的是为一位数字时是就表示数组内容,而new Array()方法表示数组长度
    var arr = Array.of(5,6,78,9)
    console.log(arr);
    var arr1 = Array.of(5);
    var arr2 = new Array(5):

    5.Array.from()

    该方法用于将类数组对象 转为 数组
  • 相关阅读:
    2篇msdn上关于语言的文章
    软件测试常用术语表
    Log4net hello world
    自己动手创建 .NET Framework 语言编译器
    ASPNET一个错误记录错误 1 未能找到元数据文件“C:/windows/assembly/GAC_32/System.EnterpriseServices/2.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServi
    读书笔记之C#的is和as操作符强制类型转换收藏
    SQL Server不允许进行远程连接的解决办法
    经典回顾Class.forName()
    wince初学记录 (1)
    关于asp.net中dataList控件的使用学习记录
  • 原文地址:https://www.cnblogs.com/zl-light/p/11561940.html
Copyright © 2011-2022 走看看