JavaScript基础——数组

JavaScript对象

数组

  • 概念:数组是指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素。
  • 本质:数组是程序在 内存 中申请的N块连续的 空间,可以用来保存一组数据

创建数组

<script>
        // 1.new Array();
        // 创建了一个空的数组
        let arr = new Array();
        console.log(arr);

        //2.new Array(长度) 
        // 创建一个有长度的空数组
        let arr2 = new Array(5);
        console.log(arr2);

        // 3.new Array(数据1,数据2,数据3....);
        let arr3 = new Array('张三', 20, '男');
        console.log(arr3);

        // 4.利用字面量
        // 创建一个空数组
        let arr4 = [];
        console.log(arr4);

        // 5.利用字面量[数据];
        let arr5 = [10];
        console.log(arr5);
        let arr6 = ['张三', 32, '男'];
        console.log(arr6);

        let arr7 = [5];
        console.log(arr7);
    </script>

数组的赋值方式

<script>
        // 在声明的同时赋值
        let arr1 = [1,2,3,4,5,6,7];
        console.log(arr1);

        // 如果在声明之后想往数组中添加数据(元素)
        // 利用下标:每一个数组内部的元素,都拥有一个下标
        // 从0开始,往后递增
        // 数组名[下标值]=数据;

        // 拓展:不连贯的下标数组,稀疏数组
       

        let arr2=[];
        arr2[0]='我';
        arr2[1]='是';
        arr2[2]='谁';
        arr2[10]='啊';

        console.log(arr2);
        // 如何获得数组中指定下标的元素
        console.log(arr2[1]);
    </script>

数组的三要素

数组的三要素:元素下标长度

  • 元素:存放在数组格子中的 数据
    • 数组元素可以是任意类型的数据:数值、字符串、布尔值、函数、数组、对象…
  • 下标:数组中为每个格子都设置了一个 ‘编号’
    • 特点:数组的下标 从0开始
  • 长度:保存了数组中所有元素的个数

数组的长度与下标的关系:最大下标+1=长度

数组的长度与下标的关系:最大下标=长度-1

<script>
        // 数组的三要素:元素,下标,长度

        // 数组的长度:数组中有多少个元素
        // 数组的长度与下标的关系:最大下标+1=长度
        // 数组的长度与下标的关系:最大下标=长度-1

        // 如何获得数组的长度
        let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
        console.log(arr.length);

        // 数组长度可否改变
        arr.length = 20; //数组的长度可以变大,添加空元素
        console.log(arr);

        arr.length = 5;
        console.log(arr); //数组的长度可以变小,但是数据会被删除(不可逆)

        
    </script>

利用数组长度添加元素

  • 利用下标的方式
// 利用下标的方式来继续添加元素
let arr = [1,2,3,4,5];
       arr[5] = 6;
       arr[6] = 7;
       arr[7] = 8;
       arr[8] = 9;
       arr[9] = 10;
       console.log(arr);
  • 利用数组的长度(数组的长度是可变的)
	let arr = [1,2,3,4,5];
	arr[arr.length] = 6;  
        arr[arr.length]=7;
        // 同理可得
        arr[arr.length]=8;
        arr[arr.length]=9;
        arr[arr.length]=10;
        console.log(arr);
案例:
  • 循环添加数组元素小练习1:往数组中添加1-100总共100个数字
// 循环添加数组元素小练习1:往数组中添加1-100总共100个数字
         let arr2=[];
         for(let i=0;i<50;i++){
            //  利用i的一致性与数组下标的一致性
            arr2[i]=i+1;

            // 利用长度length
            // arr2[arr2.length]=i+1;
            
         }
         console.log(arr2);
  • 练习:再已有数组中,循环添加数据51-100
let arr3=[1,2,3,4.5];
        for(let i=0;i<50;i++){
            arr3[arr3.length]=i+51;

        }
        console.log(arr3);
  • push方法
// 拓展:push方法
        let arr4=[1,2,3,4];
        for(let i=0;i<100;i++){
            // 利用push方法,在数组的最后添加元素
            arr4.push(i+1);
        }
        console.log(arr4);
  • 小案例
<script>
        // 1.将0-100这些数字,正序存到一个数组中
        let arr = [];
        for (i = 0; i <= 100; i++) {
            arr.push(i);
        }
        console.log(arr);
        console.log('2--------------------------');
        // 2.将0-100这些数字,倒序存到一个数组中
        let arr1 = [];
        for (i = 100; i >= 0; i--) {
            arr1.push(i);
        }
        console.log(arr1);
        console.log('3--------------------------');
        // 3.将0-100这些数字正序存到一个数组中(跳过5的倍数)
        let arr2 = [];
        for (i = 0; i <= 100; i++) {
            // console.log(i);
            if (i % 5 == 0 && i != 0) {
                continue;// 跳过本次循环,进入下一次
            }
            arr2.push(i);
        }
        console.log(arr2);
        console.log('4-----------------------------');
        // 4.将0-100这些数字正序存到一个数组中(只要5的倍数)
        let arr3 = [];
        for (i = 0; i <= 100; i++) {
            // console.log(i);
            if (i % 5 == 0 && i != 0) {
                arr3.push(i);
            }
        }
        console.log(arr3);
        console.log('5-----------------------------');
        // 5.将其5的倍数的数字,筛选出来,存到一个新的数组中
        let arr4 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 141, 51, 5, 18, 29, 95];
        // 是5的倍数
        let arrNew = [];
        // 不是5的倍数
        let otherarr = [];
        // 数组有多少数据,就要循环几次-----> length
        for (let i = 0; i < arr4.length; i++) {
            // 判断数组是否可以被5整除
            if (arr4[i] % 5 == 0) {
                // 将符合的数据保存到新数组里
                arrNew.push(arr4[i]);
            } else {
                otherarr.push(arr4[i]);
            }
        }
        console.log(arr4.length);
        console.log(arrNew);
        console.log(otherarr);
    </script>
  • 打印水仙花数
<script>
        // 数学函数:求多次幂
        // money=Math.pow(1.015,3)*100;
        // console.log(money);

        // 求100-999的水仙花数,将此保存到一个数组中
        let arr=[];
        // 打印所有的三位数
        for (let i = 100; i < 1000; i++) {

            // 判断是不是水仙花数
            //  获取i的百位 十位 个位的数字

            //  获取百位数字
            let bai = parseInt(i / 100);
            // console.log('百位上的数是:'+bai);

            // 获取十位上的数字
            let shi = parseInt((i - bai * 100) / 10);
            // console.log('十位上的数是:'+shi);

            //获取各位上的数
            // 法一:
            // let ge=parseInt(i-bai*100-shi*10)
            // 法二:
            let ge = i % 10;
            // console.log('个位上的数是:'+ge);

            // 判断i是否水仙花数
            // 方法一:
           /*  if (bai * bai * bai + shi * shi * shi + ge * ge * ge == i) {
                // console.log('水仙花数是' + i);
                arr.push(i);
             
            } */
            // 方法二:
            if (Math.pow(bai,3) + Math.pow(shi,3) + Math.pow(ge,3) == i) {
                // console.log('水仙花数是' + i);
                arr.push(i);
             
            }
        }
        console.log(arr);
   </script>
  • 数组去重
    • 假设法(反证法)
 		 // 遍历老数组
          for (let i = 1; i < oldArr.length; i++) {
              // 假设法:假设摸个条件成立
              let flag = true;
              // 遍历新数组
              for (let j = 0; j < newArr.length; j++) {
                  // 如果能进入这个位置,就代表新老数组中有相同的数据
                  // 假设失败
                  if (oldArr[i] == newArr[j]) {
                      flag = false;
                  }
              }
              if (flag) {
                  newArr.push(oldArr[i]);
              }

          }
          console.log(newArr); 
  • indexof方法
let oldArr = [2, 34, 2, 5, 44, 6, 8, 9, 8, 4, 5, 44, 34, 67, 6];
        let newArr = [oldArr[0]];

        for (let i = 0; i < oldArr.length; i++) {
            if (newArr.indexOf(oldArr[i]) == -1) {
                // 如果存在,则返回下标,如果不存在,则返回-1
                newArr.push(oldArr[i]);
            }

        }
        console.log(newArr);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值