【Day4】ES5(循环别名 ,数组,数组遍历,数组排序,二维数组)

日期:2月3日


1. 循环的别名

             别名: for () {

             }

             别名: while() {

             }

             break   结束掉离他最近的循环

             break 别名: 结束掉指定的循环

2. 循环的别名的使用场景

             1:存在于嵌套循环

             2、需求中包含 要通过内部循环结束掉外部循环 这样的场景 那么 我们才要使用循环的别名

案例:

        a:for (var i = 1; i <= 9; i++) {
           
            for (var j = 1; j <= i; j++) {
                // 系统通过内层循环结束掉外层循环
                if(i === 6) {
                   break a;
                }
                var result = i*j; // 1  --01
                result= result < 10 ? "0"+result : result
                document.write(j+"*"+i+"="+result+"&nbsp;&nbsp;")
            }
            document.write("<br>")
        }

3.数组

        变量: 内存中存储【一个】数值【容器】

         数组: 内存中存储【多个】数值【容器】,变量类型 Array   属于复杂数据类型

        特点: 存储变量的容器,数组本身也是一个变量

        数组定义:数组是一个有序的列表,可以在数组中存放任意的数据,数组的长度可以动态的调整

        数组语法:

             两部分构成

                        数组的索引: 0 开始的 并且是有顺序的

                        数组的: 每个值都会对应数组一个索引

              索引和值的关系:通过索引操作整个数组的值(重要)

              数组私有的属性:length   可以记录数组的长度

              数组的length 和  索引index 之间的关系:最大索引比长度少1

        //  定义空数组
        var arr = []
        // 数组的操作
        // 1.1 向数组中添加数据
        arr[0] = "小明"
        // 把小明修改成小红
        arr[0] = "小红"
        arr[2] = 18
        // 1.2 获取数组中指定索引位置的内容
        var name = arr[0]
        var age = arr[2]
        var u = arr[1]  // 数组中某个元素为空 返回的就是undefined

        console.log(name,age,u);
        // 1.3 删除数组中指定的内容
        delete arr[2]  // 将数组的第二个索引位置的内容 清空  长度保留的
        // 1.4 清空当前数组所有内容 
        arr.length = 0

              复杂数据类型 类型的校验:

                      Object.prototype.toString.call(arr)   [object Array]

                      value instanceof 复杂数据类型

                              true: value 属于当前的复杂数据类型

                              false: value 不属于当前的复杂数据类型

        // 校验数组的类型
        console.log(typeof arr);  // object
        console.log(Object.prototype.toString.call(arr)); // [object Array]
        console.log(arr instanceof Array);  // true   表示arr 属于数组类型

               

4.数组的遍历

        数组的遍历:  将数组的元素 一个一个拿出来 并且每个元素都可以操作     

        数组遍历两种方式:

             方式一  普通for

                1. 遍历灵活  可以自由调整 初始遍历的位置/自由调整结束遍历的位置

                    初始遍历的位置 取决于  for循环的初始值  结束遍历的位置  取决于 条件

                2.  写法相对复杂 逻辑自己定义

             方式二  增强for   for...in..

                1.  书写较为简洁

                2。 缺点 必须从初始位置遍历到最后

    

        // 定义一个带有初始值的数组 
        var arr = ['上元教育',true,18]
        arr[3] = "xxxx"
        arr[4] = "@@@@"

        // 数组的遍历

        // 方式一  for循环   初始值就是数组的初始索引  最大值 数组的长度-1  每次循环之后 数组的索引值自增1

        for(var index = 0;index < arr.length;index++) {
            console.log(index,arr[index]);
        }

        // 方式二 for in 遍历  方式二就是方式一的语法糖【简化写法】
        // 系统直接判断出 所遍历的索引就是 从 0 一直到 数组的最大的索引 
        console.log("---------------------");
        for(var index in arr) {
           
            console.log(index,arr[index]);

        }

                 

5.数组的排序

        数组的排序有很多种,这边介绍两种简单的,需要记住

      1 .冒泡排序: 相邻的两个数值进行排列  大的放后边  即为 确定最大值 放在最后面

      2. 选择排序:后面的值都和前面的进行比较 确定最小值放在最前面

             

案例:冒泡排序

     var arr = [10,9,8,7,5,4,3,2,1]   //   [1,2,3,4,5] 

        /*
        
        // [5,4,3,2,1]
         第1轮的比较    i = 0    5 -1-0    4   j<4
            4,5,3,2,1
            4,3,5,2,1
            4,3,2,5,1
            4,3,2,1,5
          第2轮比较    i = 1    5-1-1      3    j<3
            3,4,2,1,5
            3,2,4,1,5
            3,2,1,4,5
          第3轮比较    i = 2    5-1-2    2    j<2
            2,3,1,4,5
            2,1,3,4,5
          第4轮比较  i = 3    5  5-1-3   1    j<1
            1,2,3,4,5

        通过以上分析: 冒泡排序嵌套循环
          外层循环 确定循环多少轮
          内存循环 每一轮循环多少次  目的就是为了确定某一个数值的位置

          外层循环: 循环次数  数组的长度-1

          互换位置
             var a = 10
             var b = 20
             t = a;
             a = b   
             b =t   
        
        */
        for(var i = 0;i<arr.length - 1;i++) {
            for(var j = 0;j<arr.length-1-i;j++) {
                // 相邻的两个数值进行比较 如果前面的> 后面的  前后两个只需要对调
                if( arr[j]>arr[j+1]) {
                    var t = arr[j]
                    arr[j] = arr[j+1]
                     arr[j+1] =  t
                }
            }
        }

        console.log(arr);

    

案例:选择排序

         /*
          选择排序:后面的值都和前面的进行比较 确定最小值放在最前面

          第1轮比较 确定第1个元素的值  i = 0
             4,5,3,2,1    初始 1    5   4     j < 5
             3,5,4,2,1
             2,5,4,3,1
             1,5,4,3,2
          第2轮比较 确定第2个元素的值 i = 1
             1,4,5,3,2    初始 2    5   3    j < 5
             1,3,5,4,2
             1,2,5,4,3
          第3轮比较 确定第3个元素的值 i=2
             1,2,4,5,3    初始 3    5    2   j < 5
             1,2,3,5,4 
          第4轮比较 确定第4个元素的值 i = 3
            1,2,3,4,5     初始 4    5   1   j < 5
        
        */
        var arr = [10,9,8,7,5,4,3,2,1] 

        for(var i = 0;i<arr.length - 1;i++) {
            for(var j = i+1;j<arr.length;j++) {
                if( arr[i] > arr[j]) {
                    var t =  arr[i]
                    arr[i] = arr[j]
                    arr[j] = t;
                }
            }
        }

        console.log(arr);

6.二维数组

        一维数组:  存储变量的容器

                一维数组的存储特点: 只存储一行

          二维数组:  存储数组的数组 就是二维数据

                 二维数组的存储特点: 行列结构的存储容器

案例:

         // 定义二维数组

        // 创建一个空的二维数组
        // var arrArr = [];
        // arrArr[0] = []
        // arrArr[1] = []
        // arrArr[2] = []

        // arrArr[1][1] = "上元教育"

        // 创建一个带有初始值的二维数组
        // var arrArr = [];
        // arrArr[0] = ["北京","上海","广州"]
        // arrArr[1] = ["上元教育","上元会计","上元it"]
        // arrArr[2] = ["小明","小红","寒梅"]
        // 上述代码可以简写成
        var arrArr = [["北京","上海","广州"],["上元教育","上元会计","上元it"],["小明","小红","寒梅"]];

        // 修改二维数组的某个值
    
        arrArr[1][0] = "上元建工"

        // 获取二维数组的某个值
        var xh = arrArr[2][1]
        console.log(xh);

        // 遍历二维数组
        console.log("-------------------------------------");
        // 外层循环遍历出每一行
        for(var index in  arrArr) {
            // 遍历出的每一行又是一个数组
            var arr = arrArr[index];
            // 再来遍历一维数组
            for(var index2 in arr)  {
                console.log(arr[index2]);
                
            }
            console.log("################");
        }

        console.dir(arrArr);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用多种方法将二维数组变为一维数组。其中一种方法是使用ES6的展开运算符和递归函数。可以定义一个名为flatten的函数,该函数接受一个数组作为参数。在函数内部,使用map方法遍历数组的每个元素,如果元素是数组,则递归调用flatten函数,否则直接返回元素。最后,使用concat方法将所有返回的元素连接成一个新的数组。这样就可以将二维数组变为一维数组。以下是使用这种方法的示例代码: ```javascript var arr1 = \[\[0, 1\], \[2, 3\], \[4, 5\]\]; function flatten(arr) { return \[\].concat(...arr.map(x => Array.isArray(x) ? flatten(x) : x)); } var arr2 = flatten(arr1); // arr2 \[0, 1, 2, 3, 4, 5\] ``` 另一种方法是使用ES5的reduce方法。可以使用reduce方法遍历二维数组的每个元素,并使用concat方法将每个元素连接到累加器数组中。以下是使用这种方法的示例代码: ```javascript var arr1 = \[\[0, 1\], \[2, 3\], \[4, 5\]\]; var arr2 = arr1.reduce(function(a, b) { return a.concat(b); }); // arr2 \[0, 1, 2, 3, 4, 5\] ``` 还可以使用apply方法将二维数组作为参数传递给concat方法。在这种方法中,将一个空数组作为上下文对象,然后使用apply方法将二维数组作为参数传递给concat方法。以下是使用这种方法的示例代码: ```javascript var arr1 = \[\[0, 1\], \[2, 3\], \[4, 5\]\]; var arr2 = \[\].concat.apply(\[\], arr1); // arr2 \[0, 1, 2, 3, 4, 5\] ``` 以上是三种常用的方法将二维数组变为一维数组。根据具体的需求和使用的JavaScript版本,可以选择适合的方法来实现。 #### 引用[.reference_title] - *1* *2* *3* [js 标准二维数组变一维数组的方法](https://blog.csdn.net/cxu123321/article/details/107823556)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值