zoukankan      html  css  js  c++  java
  • 浅谈数组

    数组

    • 我们平常在书写代码的时候遇到需要使用多个数据,通过定义多个变量太麻烦了,所以就定义了数组。

    数组的概念和作用

    • 数组是一组数据的集合,用来存放多个数据。适用于需要操控多个数据,但是只能使用一个数据的情况。

    数组的创建

    • 字面量
      • var arr = [];
    • 构造函数
      • var arr = new Array();
    • 注意事项
      • 当两种方式创建数组,数组参数为1时,如下代码所示
       var arr = [5]; //[5]代表数组里只有一个成员5    
       var arr1 = new Array(5);//[empty × 5] 代表数组长度为5,成员为五个空
       console.log(arr);
       console.log(arr1);
      

    数组的常用方法

    • push
      • 向数组的末尾增加一项,返回数组的长度。
      var arr = [1, 2, 3, 4];
      var length = arr.push(6);
      console.log(length);//5
      console.log(arr);//[1, 2, 3, 4, 6];
      
    • unshift
      • 向数组的头部增加一项,返回数组的长度。
      var arr = [1, 2, 3, 4];
      var length = arr.unshift(6);
      console.log(length);//5
      console.log(arr);//[6, 1, 2, 3, 4];
      
    • pop
      • 从数组的尾部移除一项,返回移去的这一项。
      var arr = [1, 2, 3, 4];
      var num = arr.pop();
      console.log(num);//4
      console.log(arr);//[1, 2, 3,];
      
    • shift
      • 从数组的头部移除一项,返回移去的这一项。
      var arr = [1, 2, 3, 4];
      var num = arr.shift();
      console.log(num);//1
      console.log(arr);//[2, 3, 4];
      
    • sort
      • 排列数组中的成员 改变原数组(适用于成员全为数字)有以下几种情况:
        • 传参(传函数 该函数必有两个参数)
          • 返回 a - b ,升序排列;
          var arr = [3, 7, 9, 8, 1, 6];
          arr.sort(function(a,b){
          return a - b;
          });//[1, 3, 6, 7, 8, 9]
          console.log(arr);
          
          • 返回 b - a ,降序排列;
          var arr = [3, 7, 9, 8, 1, 6];
          arr.sort(function(a,b){
          return b - a;
          });//[9, 8, 7, 6, 3, 1]
          console.log(arr);
          
        • 不传参
          • 按照第一个数字排列;
          var arr = [3, 7, 9, 8, 1, 6];
          arr.sort(function(){
          });//[3, 7, 9, 8, 1, 6]
          console.log(arr);
          
    • join
      • 以参数作为间隔将数组转换为字符串,默认为","
      var arr = [1, 2, 3, 4, 5, 6];
      var str = arr.join();
      var str1 = arr.join("*");
      console.log(str);//1,2,3,4,5,6
      console.log(str1);//1*2*3*4*5*6
      
    • concat
      • 连接作用 给数组连接新成员,如果新成员中有数组会先将这个数组拆开在连接,返回新数组
      var arr = [1, 2, 3, 4, 5, 6];
      var arr1 = arr.concat(7,8,9,[10,11,23]);
      console.log(arr1);//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 23]
      
    • slice
      • 用于截取数组中的一段成员 返回新数组。分为以下几类
        • slice()表示将整个数组截取
        var arr = [1, 2, 3, 4, 5, 6];
        var arr1 = arr.slice();
        console.log(arr1);//[1, 2, 3, 4, 5, 6]
        
        • slice(a)表示从下标a截取到最后
        var arr = [1, 2, 3, 4, 5, 6];
        var arr1 = arr.slice(2);
        console.log(arr1);//[3, 4, 5, 6]
        
        • slice(a,b)表示从下标a截取到下标b,[a,b)
        var arr = [1, 2, 3, 4, 5, 6];
        var arr1 = arr.slice(2,4);
        console.log(arr1);//[3, 4]
        
        • slice(负数),表示从后往前数
        var arr = [1, 2, 3, 4, 5, 6];
        var arr1 = arr.slice(3,-2);
        console.log(arr1);//[4]
        
    • reverse
      • 将一个数组倒序 影响原数组(原数组倒序排列)返回原数组
      var arr = [1, 2, 3, 4, 5, 6];
      arr.reverse();
      console.log(arr);//[6, 5, 4, 3, 2, 1]
      
    • splice
      • 操作数组 接收的第一个参数表示操作数组的位置,第二个参数表示要删除的项数,之后的参数表示向第一个参数插入的成员(参数不固定)返回改变后的原数组
      var arr = [1, 2, 3, 4, 5, 6];
      arr.splice(1,2,7,8,9);
      console.log(arr);//[1, 7, 8, 9, 4, 5, 6]
      

    ES5新增的数组方法

    • indexOf
      • 查找数组中的某一个成员,存在返回下标,不存在返回-1
      • 第一个参数是查找的成员,第二个参数是查找元素的起始位置
      var arr = [1, 2, 3, 4, 5, 6, 7, 8];
      var index = arr.indexOf(5,4);
      console.log(index);//4
      
    • filter
      • 过滤 参数为函数 返回值为符合参数表达式的成员组成的数组
      • 函数的第一个参数为数组成员 函数的第二个参数为数组成员的索引 第三个参数为数组本身
      var arr = [1, 2, 3, 4, 5, 6, 7, 8];
      var arr1 = arr.filter(function(value,index,self){
          return value % 2 == 1;
      })
      console.log(arr1);//[1, 3, 5, 7]
      
    • forEach
      • 该方法用于循环 参数为一个函数,执行次数为length次,没有返回值
      • 函数的第一个参数为数组成员 函数的第二个参数为数组成员的索引 第三个参数为数组本身
      var arr = [1, 2, 3, 4, 5, 6, 7, 8];
      arr.forEach(function(value,index,self){
          console.log(value,index,self);
      })
      
    • map
      • 该方法也用于循坏参数为一个函数,执行length次,返回值为一个新数组,新数组的成员为参数函数的返回值
      • 函数的第一个参数为数组成员 函数的第二个参数为数组成员的索引 第三个参数为数组本身
      var arr = [10, 20, 30, 40, 50, 60, 70, 80];
      var arr1 = arr.map(function(value,index,self){
          return value * 1.5
      })
      console.log(arr1);//[15, 30, 45, 60, 75, 90, 105, 120]
      
    • some
      • 用于判断数组是否存在符合条件的成员,参数为一个函数,返回值为布尔值(只要有一个成员符合就为true,全部不符合就为flase)
      • 函数的第一个参数为数组成员 函数的第二个参数为数组成员的索引 第三个参数为数组本身
      var arr = [1, 2, 3, 4, 5, 6, 7, 8];
      var result = arr.some(function(value,index,self){
          return value === 5;
      })
      console.log(result)//true
      
    • every
      • 用于判断数组是否存在符合条件的成员,参数为一个函数,返回值为布尔值(只要有一个成员不符合就为flase,全部符合就为true)(对比some)
      • 函数的第一个参数为数组成员 函数的第二个参数为数组成员的索引 第三个参数为数组本身
      var arr = [1, 2, 3, 4, 5, 6, 7, 8];
      var result = arr.every(function(value,index,self){
          return value === 5;
      })
      console.log(result)//false
      
    • fill
      • 填充数组 接收三个参数 改变原数组
      • 传一个参数a,就是将数组的每个成员都填充为a
      var arr = [1, 2, 3, 4, 5, 6, 7, 8];
      arr.fill(9);
      console.log(arr);//[9, 9, 9, 9, 9, 9, 9, 9]
      
      • 传两个参数a,b 第一个参数为填充数,第二个参数是开始填充位置,往后都填充为a
      var arr = [1, 2, 3, 4, 5, 6, 7, 8];
      arr.fill(9,3);
      console.log(arr);//[1, 2, 3, 9, 9, 9, 9, 9]
      
      • 传三个参数 第一个参数为填充数 第二个填充的起始位置 第三个参数填充的结束位置
      var arr = [1, 2, 3, 4, 5, 6, 7, 8];
      arr.fill(9,3,6);
      console.log(arr);//[1, 2, 3, 9, 9, 9, 7, 8]
      

    ES6新增的数组方法

    • find
      • 查询数组中的成员,参数为一个函数,返回值为符合条件表达式的第一个成员,都不符合返回underfined
      • 函数的第一个参数为数组成员 函数的第二个参数为数组成员的索引 第三个参数为数组本身
      var arr = ["张三", "李四", "王五", "赵六", "田七", "刘八"];
      var username = arr.find(function(value,index,self){
          return value.indexOf("四") != -1;
      })
      console.log(username);//李四 
      
    • findIndex
      • 查询数组成员的索引值,参数为一个函数,返回值为符合条件表达式的第一个成员的索引,没有就返回-1
      • 函数的第一个参数为数组成员 函数的第二个参数为数组成员的索引 第三个参数为数组本身
      var arr = ["张三", "李四", "王五", "赵六", "田七", "刘八"];
      var Index = arr.findIndex(function(value,index,self){
          return value.indexOf("四") != -1;
      })
      console.log(Index);//1
      
    • copyWithin
      • 数组的内部复制,接收三个参数
      • 第一个参数为被替换位置 第二个参数为复制的起始位置 第三个参数为复制的结束位置(包含开始位置不包括结束位置)
      var arr = [1, 2, 3, 4, 5, 6, 7, 8];
      arr.copyWithin(1,3,7);
      console.log(arr);// [1, 4, 5, 6, 7, 6, 7, 8]
      
  • 相关阅读:
    破解版sublimeText3重新安装Package Control方法
    javascript中对象的属性的特性
    正则表达式元字符详解
    正则表达式学习笔记
    ExtJs布局大全
    js如何获取select下拉框的value以及文本内容
    ExtJS4之Ext.MessageBox的各种用法
    CODING 代码多仓库实践
    2019 DevOps 必备面试题——容器化和虚拟化
    拥抱微服务,CODING 即将上线单项目多仓库功能
  • 原文地址:https://www.cnblogs.com/tongmeng/p/11610023.html
Copyright © 2011-2022 走看看