JavaScript-day03

163 阅读3分钟

一.循环嵌套

1.循环嵌套的执行逻辑

                 // 外层循环     循环1次,
            for (let j = 1; j <= 10; j++) {           
                str += '<tr>';
    
                // 内层循环     内层循环循环一周。
                for (let i = 1; i <= 10; i++) {               
                    str += '<td></td>'
                }
    
                str += '</tr>';
            }

for里嵌套着for,外层循环执行一次,内层循环执行一周。

二.逻辑运算符扩展

1.逻辑短路

           JS设计者设计的与逻辑&& ||的一种规则。
          逻辑与
           let a = 10;
           let ret = false && ++a;
           console.log(a);
          /* 
          逻辑与短路:
              根据逻辑与的口诀,找假
              左侧为false,右侧主没有必再进行一次运算,所以右侧++a没有被计算,相当于被短路。 
          */
          逻辑或
           let b = 10;
           let ret1 = true || ++b;
           console.log(b);
           /* 
           逻辑或短路:
               根据逻辑或的口诀,找真
               左侧为true,右侧主没有必再进行一次运算,所以右侧++b没有被计算,相当于被短路。 
              */
              

三.数组

1.数组的定义

  01.数组是一数组数据有序的集合,[值,值,值,...]

  三要素:
        元素:数组中的每一个数据就是一个元素,元素可以是任何类型
        下标:下标就是元素的序号,编号从0开始,
        长度:数组中的元素的个数就是长度    数组.length

2.数组头尾元素的添加与删除

           //        0    1   2
          let arr = [10, 20, 30];
         // 通过下标来添加元素
           arr[3]=40;
           arr[10]=60;
           alert(arr);
           */

1.添加:

数组.push(数据) 在数组尾部追加

数组.unshift(数据) 在数组头部添加

2.删除:

数组.pop() 删除数组尾部的元素

数组.shift() 删除数组头部的元素

3.数组中间元素的删除与添加

          let arr = [10, 20, 30, 40, 50,60, 70,80,90,100,110];
   
           // 数组名.splice(起始下标,删除个数,新元素,新元素...)
           // 从 起始下标 开始,删除指定个数的元素,还可以在被删除的位置插入新的元素
   
           // arr.splice(1,2);
           // arr.splice(1);  如只是输入一个数,则后面的都删除
           // arr.splice(1,2,'a','b','c','d');
           arr.splice(1,0,'a','b','c','d');
           console.log(arr);

4.数组的遍历

             // 遍历:由于某个需求,需在对数组中的每个元素都要访问一次。
              // i           0          1         2         3           4    5  
              let arr = ['zhangsan', 'lisi', 'wagnwu', 'zhaoliu', 'qianqi', 20, ];

              // 使用for循环的控制变量来模拟数组的下标
              for(let i=0;i < arr.length ;i++){
                  // console.log(i);
                  // 将循环控制变量作为数组的下标
                  console.log(arr[i]);
              }
              

5.数组元素求和

         let arr = [98, 87, 92, 80, 91, 100];
   
          let sum = 0;
   
          for(let i=0; i< arr.length; i++){
              // sum = sum + arr[i];      // +=  -= *= /=
              sum += arr[i];
          }
   
          console.log(sum);

6.数组元素的筛选

             // 将数组中大于10的元素筛选出来,保存到一个新的数组中。
              let arr = [5, 12, 8, 11, 9, 15, 20];
         
              let nArr = [];
         
              for(let i=0; i< arr.length;i++){
                  if(arr[i] > 10){
                      // console.log(arr[i]);
                      nArr.push(arr[i])
                  }
              }

             console.log(nArr);

7.查找元素的下标

            let arr = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu', 'qianqi','wangwu']
        
             // 查找 wangwu 的下标
             let target = 'wangwu'
             for(let i=0;i<arr.length;i++){
                 if(arr[i] == target){
                        
                     console.log(`与${target}相同的元素的下标是${i}`);
                 }
             }

8.数组坍塌

                // 将元素0删除掉
                //        0   1  2  3  4  5  6  7  8  9
                let arr = [5, 12,0, 8, 11,0, 0, 0, 9, 0, 15, 20,];
                for(let i=arr.length-1;i>=0;i--){
                    if(arr[i] == 0){
                        // console.log(i);
                        arr.splice(i,1)
                    }
                }
        
                console.log(arr);

四.循环结构-while循环

1.while循环语法及逻辑

           /* 
           while语法:
               while(表达式){
                   循环体
               }
   
           不确定范围的情况下使用
           执行逻辑:
               先判断表达式是否成立,如果不成立就直接跳过while结构,继续后面的代码执行。
               如果成立就执行循环体。循环体执行结后再来判断表达式是否成立
               依此规律循环往复的执行,直到表达不成立(或提前退出)
           
           */
           // while循环就是for循环的一个变形
   
           let i=1;
           while(i<=10){
               console.log(i);
               i++;
           }

2.break与continue

break与continue是用于在循环内,控制循环的。

              // break直接结束循环
              for(let i=1;i<10;i++){
              
              if(i% 3==0){
                    break;
                    console.log('hello');
                }
              
                console.log(i);


                 // continue结束本次循环里continue后面的代码,继续下一次循环
                   for(let i=1;i<10;i++){
                       //....
                       if(i% 3==0){
                           continue;
                           console.log('hello');
                       }
                       //..
                       console.log(i);
                   }

3.while与for循环的区别

       for循环是根据次数循环,循环次数已知
       while循环是根据条件进行循环,循环次数未知