数组(Array)

120 阅读2分钟

数组(Array)

1.定义

数组是一种可以按顺序保存数据的数据类型

2.数组的基本使用

2.1 声明语法

image.png

2.2 取值语法

image.png

  <script>
    // 1.声明数组(array),英文下的中括号[用逗号隔开数据]
    let arr = ['苹果', '雪梨', '香蕉','圣女果','榴莲','芒果','石榴']
    // 2.取值语法
    // 获取这个数组的第0个元素 (就是讲的是索引或者下标)
    console.log(arr[0]); //结果是苹果
    // 3.数组的长度 (arr.length)
    console.log(arr.length); //结果是7
    //当我们的获取的元素的下标超出了数组的长度就输出undefined
    console.log(arr[100]);  //结果是undefined
  </script>

2.3 专业术语

  • 元素 :数组中保存的每个数据都叫数组元素
  • 下标:数组中数据的编号
  • 长度:数组中数据的个数,通过数组的length属性来获取

注意点

  • 数组是按顺序保存,所以每个数据都有自己的编号

  • 在数组中,数据的编号也叫索引或下标。通常我们也是叫索引或下标来指示元素

  • 计算机中的编号是从0开始的

  • 当我们的获取的元素的下标超出了数组的长度就输出undefined

2.4 遍历数组

用循环把数组中的每个元素都访问到,一般用for循环遍历

语法

image.png

推导for循环遍历数组的由来

 <title>推导数组的循环由来</title>
</head>
<body>
  <script>
    // 声明一个数组
    let arr = [10,20,30,40,50]
    // 挨个打印数组里面的元素
    arr[0] //结果是10
    arr[1] //结果是20
    arr[2] //结果是30
    arr[3] //结果是40
    arr[4] //结果是50
    // 通过循环挨个打印数组里面的元素
    for (let index = 0; index < arr.length; index++) {
     
      // 如果index =1,2,3,4,5  arr[5]
      // arr[index]  那么就发现arr[0]没有输出,或者输出arr[5]是undefined
      // 所以综上所述,我们发现下标index的范围只能是 0-4
      // index = 0
      // 下标范围只能是0-4,用index <=4 或者index < 5
      // 因为数组的长度是5(arr.length),所以最终比较好的写法是index < arr.length
    }
  </script>

小试牛刀案例1

需求:求数组 [2,6,1,7, 4] 里面所有元素的和以及平均值

代码案例

<script>
      // 声明数组
      let arr = [2, 6, 1, 7, 4];
      // 声明一个变量求和 sum
      let sum = 0;
      // 遍历数组的循环
      for (let index = 0; index < arr.length; index++) {
         /* 当index = 0,arr =2,sum = arr = 2
       当index = 1,arr =6,sum = 上面的sum + arr = 2+6*/
        // sum = sum + arr[index] 可以简写为
        sum += arr[index];
      }
      console.log(sum);
      //平均值=总和/元素的个数 (arr.length)
      console.log(sum / arr.length);
    </script>

小试牛刀案例2

需求:求数组 [2,6,1,77,52,25,7] 中的最大值和最小值

最大值代码如下

  <title>数组求最大值</title>
  </head>
  <body>
    <script>
      // 声明数组
      let arr = [2, 6, 1, 77, 52, 25, 7];
      // 假设一个最大值等于数组的第0个元素 
      let max = arr[0];
      // for循环
      for (let index = 0; index < arr.length; index++) {
        // 如果当前的数组元素大于 max
        if (arr[index] > max  ) {
          // 满足条件 max 等于输出当前的数组元素
          max = arr[index]
        }
      }
      console.log(max);
    </script>

最小值代码如下

<title>数组求最小值</title>
  </head>
  <body>
    <script>
      // 声明数组
      let arr = [2, 6, 1, 77, 52, 25, 7];
      // 假设一个最小值等于数组的第0个元素 
      let min = arr[0];
      // for循环
      for (let index = 0; index < arr.length; index++) {
        // 如果当前的数组元素小于 min
        if (arr[index] < min  ) {
          // 满足条件 max 等于输出当前的数组元素
          min = arr[index]
        }
      }
      console.log(min);
    </script>
  </body>

3.操作数组

3.1定义

数组本质是数据集合,操作数据无非就是增,删,改,查的语法

3.2数组增加新的元素

  • 数组.push(新增的内容) 方法,特点在末尾新增元素
     <script>
          // 声明数组
          let arr = ["苹果", "雪梨", "香蕉", "圣女果"];
          // 新增一个数组元素
          arr.push("榴莲", "芒果", "石榴");
          console.log(arr);
        </script>
    
    小试牛刀案例1

    需求:接收用户的4次输入同学的名字,组成一个数组

    代码如下

    <script>
          /* 需求:让用户输入4个同学名字组成数组 */
          // 声明数组
          let arr = [];
          // for循环
          for (let index = 0; index <= 4; index++) {
            //要重复循环的循环体
            let userNames = prompt("请输入你的姓名");
            // 新增的用户名放到数组里面
            arr.push(userNames);
          }
          console.log(arr);
        </script>
    
    小试牛刀案例2

    需求:将数组 [2, 0, 6, 1, 77, 0, 52, 0, 25, 7] 中大于等于 10 的元素选出来,放入新数组

    代码如下

        <script>
          /* 需求:将数组 [2, 0, 6, 1, 77, 0, 52, 0, 25, 7] 中大于等于 10 的元素选出来,放入新数组
           */
          // 声明一个旧的数组
          let arr1 = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
          // 创建一个新的数组,存放过滤出大于等于10的元素
          let arr2 = [];
          // for循环 第一个数组
          for (let index = 0; index < arr1.length; index++) {
            // 判断,如果当前循环的元素大于或者等于10的条件
            if (arr1[index] >= 10) {
              //满足条件就,放到新的数组中
              arr2.push(arr1[index]);
            }
          }
          console.log(arr2);
        </script>
    
  • 数组.unshift (新增的内容) 方法,特点在开头新增元素
     <script>
          // 声明数组
          let arr = ["香蕉", "圣女果", "榴莲", "芒果"];
          // 开头新增数组
          arr.unshift("苹果", "雪梨");
          console.log(arr);
        </script>
    

总结

<script>
      /*1. push 和unshift 都可以做到给数组添加新的元素
      2.这两个代码在执行的时候,还可以返回数组的长度 (了解即可)) */
      let arr = ["苹果", "雪梨", "香蕉", "榴莲", "芒果"];
      // 添加新的元素 == 返回添加新元素之后的数组长度,
      let arrLength = arr.unshift("石榴");   //arrLength = 数组的长度= 6
      console.log(arr.length);
    </script>

3.3 数组删除元素

  • 数组. pop() 方法从数组中删除最后一个元素,并返回该元素的值

    <script>
          // 声明数组
          let arr = ["苹果", "雪梨", "香蕉", "圣女果", "榴莲", "芒果", "石榴"];
          // pop 删除最后一个元素
          arr.pop();
          console.log(arr); //结果是"苹果", "雪梨", "香蕉", "圣女果", "榴莲", "芒果",
        </script>
    
  • 数组. shift() 方法从数组中删除第一个元素,并返回该元素的值

    <script>
        // 声明一个数组
        let arr = [ "苹果", "雪梨", "香蕉", "圣女果", "榴莲", "芒果", "石榴"]
        // shift 删除开头的第一个元素
        arr.shift()
        console.log(arr);  //结果是"雪梨", "香蕉", "圣女果", "榴莲", "芒果", "石榴"
      </script>
    
  • 数组. splice() 方法 删除指定元素

    <script>
        // 声明数组
        let arr = ["苹果", "雪梨", "香蕉", "圣女果", "榴莲", "芒果", "石榴"]
        // splice ('想要删除的元素的下标','想要删除几个')
        // 需求现在想要删除的香蕉
        /* 分析 :删除数组中的下标为1的元素
        从1的位置开始想要删除几个 */
        arr.splice(1,2)
        console.log(arr);
        // 指定位置来插入元素
        //  splice ('想要删除的元素的下标','想要删除几个', '在该下标位置添加元素')
        // 在1的位置,删除0个元素,增加一个红薯
        let arr1 =  ["苹果", "雪梨", "香蕉", "圣女果", "榴莲", "芒果", "石榴"]
        arr1.splice(1,0,'西瓜')
        console.log(arr1);
      </script>
    

    3.4 补充

    1.获取数组的最后的一个元素 [arr.length -1 ]

    <script>
      /*   // 1.获取数组的最后的一个元素  [arr.length -1 ] 常用规则
        let arr = ['苹果', '雪梨', '香蕉','圣女果','榴莲','芒果','石榴']
        // 获取石榴元素
        console.log(arr[arr.length -1]); */
      </script>
    
    1. 修改或者新增数组元素

    a. 如果下标这个位置已经有元素,那就是修改

    b. 如果下标这个位置没有元素,添加就可以了,最终数组长度最少变成(下标+1)

    3.数组 可以存放任意类型的数据,可以这么做,但是不建议,我们建议一个数组内的类型要统一

let arr1 = ['苹果', 100,null,true,NaN, undefined ,80]
   

4.数组快速清空 或者删除元素的方式 ,数组的长度是动态变化的

		arr = [] or
		arr.length = 0
      // 保留3个元素,其他不要了
      arr.length = 3
      console.log(arr);