• JS中数组的方法


    在js中数组的重要性不言而喻,下面就来介绍一些数组的常用方法

    一、基本方法

      1.增

      ①.  arr.push()

        在数组的末尾添加一个元素。

        var arr = [1,2,3,4];
        var newArr = arr.push(8);
        console.log(arr);  //(5) [1, 2, 3, 4, 8]

        该方法会改变原数组,在数组的最后一位直接插入一个元素,增加数组的长度。

      ②   arr.unshift()

        在数组的第一位添加一个元素。

    var arr = [1,2,3,4]
        arr.unshift("l")
        console.log(arr)  //(5) ["l", 1, 2, 3, 4]

        该方法也会改变原数组,在数组的第一位添加一个元素,增加数组的长度。

      2、删

      ①   arr.pop()

        删除数组的最后一位元素。

    var arr = [1,2,3,4];
        arr.pop();
        console.log(arr);  //(3) [1, 2, 3]

        该方法同样会改变原数组。

      ②   arr.shift()

        删除数组的第一位元素。

    var arr = [1,2,3,4];
        arr.shift();
        console.log(arr);  //(3) [2, 3, 4]

        该方法也会改变原数组。

      ③   arr.splice(n,m,a)

        表示从第从索引为n开始删除,一共删除m个;a可选,表示在删除的地方添加一个新的元素a。

    var arr = [1,2,3,4];
        var newArr = arr.splice(1,2);
        console.log(newArr);  //(2) [2, 3]
        console.log(arr);  //(2) [1, 4]

        该方法也一样会改变数组。

      ④   arr.slice(n.m)

        表示从索引为n的元素开始截取,截取到下标为m的前一个返回一个新的数组并没有改变原数组

    var arr = [1,2,3,4];
        var arr2 = arr.slice(1,3);
        console.log(arr2);  //(2) [2, 3]
        console.log(arr);  //(4) [1, 2, 3, 4]

        Tip:这里要注意和arr.splice()方法的区别,不要混淆。

    二、ES5中新增的数组的方法

    1、arr.indexOf()

      arr.indexOf(data,start)有两个参数,第二个参数可选,表示的是从索引为start开始检测;该方法可以用来检测数组中是否含有某个元素,返回值为该元素在数组中的索引,当数组中不包含该元素的时候,返回值为-1;因此该方法也可以用来检测数组中是否含有某个元素;

    var arr = [1,2,3,4];
    var res = arr.indexOf("a");
    console.log(res);  //返回值为-1;

      补充一个arr.lastIndexOf(),用法同arr.indexOf(),但是arr.lastIndexOf()是从后开始向前检索。

    2、forEach(callback)

      该方法可以用来循环遍历数组;参数为回调函数。下面先来看一下结构。

    var arr = ['a','b','c','d'];
    arr.forEach(function(e,i,arr){
      console.log(e);
    })
      // "a"  "b"  "c"  "d"
    
    arr.forEach(function(e,i,arr){
      console.log(i);
    })
      // 0,1,2,3
    
    arr.forEach(function(e,i,arr){
      console.log(arr);
    })
      // ['a','b','c','d']
      // ['a','b','c','d']
      // ['a','b','c','d']
      // ['a','b','c','d']

      通过上面的代码可以看出,arr.forEach()要接受一个回调函数,该函数有三个参数,这里的e表示元素,i表示索引,arr表示的是数组。

      为了方便理解,下面通过一个案例来看一下for.Each()的用法。

    var arr = [-1,-2,32,15,-8];
    var arrNew = [];
    arr.forEach(function(e,i,arr){
      e < 0 ? e = -e : e;
      arrNew.push(e);
    })
    console.log(arrNew)    // [1, 2, 32, 15, 8]

    3、arr.map(callback)

      该方法同for.Each()一样也可以对数组进行遍历,用法也和for.Each()一样,在这里就不做过多的介绍;

      arr.map()方法不仅可以遍历数组,还可以对数组进行计算;

    var arr = [1,2,3,4];
            var newArr = arr.map(function(e,index,arr){
                return e-1;
            })
            console.log(newArr);
            // [0, 1, 2, 3]

    4、arr.filter(callback)

      过滤数组,也可以遍历数组;

    var arr = [1,2,3,4];
    var newArr = arr.filter(function(e,index,arr){
         return e > 2;
    })
    console.log(newArr);
     // [3, 4]

      如上代码,可以使用该方法将数组中的值小于2的值过滤掉,返回一个新的符合回调函数内条件的数组。

    5、arr.every(callback)

      使用该方法,如果数组中的每一个元素都符合回调函数内的条件,则返回true,否则返回false;

    //效果是我们判定这个数组全是正数 使用.every
    var arr = [1,58,125,-12,458,12];
    var Boon = arr.every(function(e,i,arr){
      return e > 0;
    })
    console.log(Boon)      //false

    6、arr.some(callback)

      该方法和every有点类似,只不过当数组中又至少一个符合条件的时候都返回true,当全部都不符合的时候,才返回false;

    //效果是我们判定这个数组是否有一个负数 使用.some
    var arr = [1,58,125,-12,458,12];
    var Boon = arr.some(function(e,i,arr){
      return e < 0;
    })
    console.log(Boon)      // ture

    7、arr.reduce(callback)

      这个方法比较复杂,我们来看一个例子 

      代码如下:

         var arr1 = [1,7,5,7,1,3];
            var arr2 = arr1.reduce(function(prev,cur,index,arr){
                console.log(prev);
                return prev + cur;
            });
            console.log("结果为" + arr2);
            // 1
            // 8
            // 13
            // 20
            // 21
            // 结果为24

      具体看这个代码,首先我们在传入reduce的函数中打印了prev值,可以看到prev就是数组每两项的和。比如第一个是1,第二个就是1+7 = 8,以此类推。

    最后,我们把结果返回。这是没设置第二个参数的情况。

      下面我们来看看设置了第二个参数为2的例子。

         var arr1 = [1,7,5,7,1,3];
            var arr2 = arr1.reduce(function(prev,cur,index,arr){
                console.log(prev);
                return prev + cur;
            },2);
            console.log("结果为" + arr2);
            // 2
            // 3
            // 10
            // 15
            // 22 
            // 23
            // 结果为26

      我们可以看出,当设置了第二个参数。我们第一个prev输出的结果就是第二个参数的值。设置了这个参数,会多执行一次

      利用这种方法,我们可以快速的把二维数组转化为一维数组。

            var arr1 = [
                [1,2],
                [3,4],
                [5,6]
            ]
            var arr2 = arr1.reduce(function(prev,cur,index,arr){
                return prev.concat(cur);
            });
            console.log(arr2)  //[1, 2, 3, 4, 5, 6]       

      看到这里相信arr.reduceRight()的用法你也应该会了吧,和arr.reduce()类似,只不过是从右向左而已,在这里就不详细的介绍啦。

      

  • 相关阅读:
    ACE 的一些词汇
    odbc连接不上,初步猜想是myodbc安装有问题
    1分钟 当数据库管理员
    硬件申请
    编译删除
    ASP.NET之数据绑定
    发布、订阅、复制、同步SQL Server 2000 数据库
    SQL——添加约束的语句
    SQL——规则
    十大著名黑客—— 凯文米特尼克
  • 原文地址:https://www.cnblogs.com/mengshou/p/11432528.html
Copyright © 2020-2023  润新知