循环结构

循环结构作用:代码重复执行

1.1-for循环结构

  • 1.for循环语法
for( 语句1;语句2;语句3 ){循环体:需要反复执行的代码;
}
  • 2.执行步骤:

    • 1.执行语句1(定义一个循环变量)

      • 2.执行语句2,判断语句2条件是否成立(条件表达式)

        • 2.1 如果条件成立,则执行循环体代码

          • 执行语句3(循环变量自增),重复步骤2
        • 2.2 如果不成立,结束循环,执行大括号后面的代码
  • 3.for循环好处及注意点
    • 好处:循环变量的声明与循环变量自增在一个小括号中,可以更好的避免死循环
    • 注意点:原则上语句1,语句2,语句3可以是任意代码,但是不建议乱写,因为会导致死循环
  • 语句1:通常是定义循环变量
  • 语句2:条件表达式
  • 语句3:通常都是循环变量自增/自减(视需求而定
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body></body><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>for循环</title></head><body><script>/* 1. for循环语法for(代码1;代码2;代码3){循环体代码};*///需求:打印三次 大前端爱你们么么哒for (let i = 1; i <= 3; i++) {console.log("大前端爱你们么么哒");}/* for循环注意点 : 原则上代码1,代码2,代码3可以写任意代码,但是一般不会乱写代码1 : 声明循环变量代码2 : 循环条件代码3 : 循环变量自增*/</script></body></html>
</html>

1.2-for循环练习(箩筐思想求和)

箩筐思想求和

​ a.声明空箩筐

​ b.遍历萝卜堆数

​ c.将萝卜放入箩筐中

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>for循环-空框思想求和</title></head><body><script>//4.求累加和/ 平均值 = 累加和/数量/* 箩筐思想 : 三步法1.声明空箩筐2.遍历萝卜堆数3.将萝卜放入箩筐*///1.声明空箩筐let sum = 0;// 2.遍历萝卜堆数for (let i = 1; i <= 100; i++) {console.log(i); // 遍历出来  1 ~ 100// 3.将萝卜放入箩筐sum += i;}console.log(sum);</script></body>
</html>

1.3-for循环练习(擂台思想求最大/小值)

擂台思想求最大/小值

​ a.声明擂主

​ b.遍历挑战者

​ c.依次与擂主PK,交换位置

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>for循环-擂台思想求最大值</title></head><body><script>/* 擂台思想 : 三步法1.声明空擂主 : (第一次挑战者无条件坐擂主)2.遍历挑战者3.依次和擂主PK*///5.求最大值与最小值//请用户输入5个数, 将最大的那个数打印出来// 求最大值:// 定义一个擂主:保存最大值 , 需要的是用户的最大值,定义一个变量一定能够被打赢(定义一个最小值) -Infinitylet max = -Infinity;// 打擂:5次  (for循环遍历)for (let i = 0; i < 5; i++) {let user = +prompt(`请输入第${i + 1}个数`);// console.log(i);// 依次和擂主Pkif (user > max) {// 交换擂主max = user;}}document.write(`您输入的数字中最大的那个数是${max}`);//请用户输入5个数, 将最小的那个数打印出来//  求最小值//1.声明空擂主 : (第一次挑战者无条件坐擂主)let min = Infinity;//2.遍历挑战者(for 循环)for (let i = 1; i <= 5; i++) {let num = prompt("请输入第" + i + "个挑战者");//3.依次和擂主PKif (num < min) {// 交换擂主min = num;}}console.log(min);</script></body>
</html>

1.4-break与continue关键字

  • 1.break:结束整个语句

    • break既可以用于循环结构也可以用于switch分支结构
  • 2.continue:结束本次循环体,进入下一次循环判断
    • continue只能用于循环结构语句
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>break与continue关键字</title>
</head>
<body></body>
<script>/*** break:结束整个语句* break既可以用于循环结构也可以用于switch分支结构* continue:结束本次循环体,进入下一次循环判断* continue只能用于循环结构语句*///示例:吃包子:我买了十个包子,包子每次只能吃一个,需要循环吃十个//break:假如吃到第五个我吃饱了,后面的包子就都不用吃了//continue:假如吃到第五个吃出来小强,那我第五个不吃了,但是我没吃饱,后面还是要继续吃let sum = 0;for(let i = 1;i<=10;i++){// continue// if(i == 5) {//     console.log ( "吃到小强了,这个包子我不吃了" );//      continue;//结束本次循环体(后面的代码不会执行),循环没有结束,还是会依次执行语句3和语句2// };//breakif(i==5){console.log ( "我吃饱了,后面的包子都不想吃了" );break;//结束整个循环语句}console.log ( "我吃的是第" + i + "个包子" );}</script>
</html>

1.5-循环次数不固定02:穷举

穷举:从1遍历到无穷大,找出符合条件的数

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>循环次数不固定02:穷举</title></head><body></body><script>//需求:有一群人,如果3个人站一排多出1个人,如果4个人站一排多出2个人,如果5个人站一排多出3个人//请问这群人有多少人for (let i = 1; i < Infinity; i++) {//从1循环到无穷大,也是一种死循环if (i % 3 == 1 && i % 4 == 2 && i % 5 == 3) {console.log("人数为" + i);break; //找到答案,结束循环}}</script>
</html>

1.6-数组遍历

  • 1.数组的遍历:获取数组中每一个元素的值,称之为遍历该数组

    • 如果想要获取数组中每一个元素的值,则需要通过循环语法来获取
  • 2.一般使用for循环来遍历数组,只不过数组的遍历是一种固定格式的for循环
  • 3.固定循环语句格式:for(let i = 0; i < arr.length; i++) {// 数组遍历的固定结构}
    • 思考:为什么循环变量let i = 0 而不是1呢?
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>数组遍历</title></head><body></body><script>/*** * 1.数组的遍历:获取数组中每一个元素的值,称之为遍历该数组*          * 如果想要获取数组中每一个元素的值,则需要通过循环语法来获取*    2.一般使用for循环来遍历数组,只不过数组的遍历是一种固定格式的for循环*    3.固定循环语句格式:*    `for(let i = 0; i < arr.length; i++) {*    // 数组遍历的固定结构*    }`*/let arr = [10, 20, 30, 40, 50];for (let i = 0; i < arr.length; i++) {let item = arr[i]; //获取数组的每一个元素console.log(item);}</script>
</html>

1.7 - 翻转数组

//真正使用,一行搞定
console.log( arr.reverse( ) );

1.7.1 - 翻转数组(思维锻炼)

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body></body><script>let arr = ["a", "b", "c", "d", "e"];//  0   1   2   3   4// 翻转数组目标:['e','d','c','b','a']//        0   1   2   3   4// 简单的思路解析// 1.创建一个新数组:空的// 2.从原数组最后开始读取元素:读取一个就放到新数组中// 分析:新数组放数据  新数组[新数组.length] = 值// 分析:老数组如何从后面开始读取数据? for循环的变量  从 length - 1 到 0let newArr = [];for (let i = arr.length - 1; i >= 0; i--) {console.log(arr[i]);newArr[newArr.length] = arr[i];}console.log(newArr);</script>
</html>

1.7.2 - 交换数组(思维锻炼)

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body></body><script>let arr = ["a", "b", "c", "d", "e"];/* 1.2 交换法(1)遍历数组一半(2)下标为 i元素   与  下标为 arr.length-1-i  元素交换*///1.遍历数组的一半for (let i = 0; i < arr.length / 2; i++) {// 第一个与最后一个// i= 0 arr.length - 1// i= 1 arr.length - 1 - 1// i= 2 arr.length - 1 - 2// i  ===  arr.length - 1 - iconsole.log(i); //0,1,2// a = arr[i]  b = arr[arr.length - 1 - i]// let  temp = a// a = b// b = temp//2. 下标为i元素  和 下标为arr.length-1-i元素交换let temp = arr[i]; // 01-定义一个新变量保存  第 i 个位置的值arr[i] = arr[arr.length - 1 - i]; //  后面的覆盖前面的arr[arr.length - 1 - i] = temp; //}console.log(arr);</script>
</html>

1.8 - 二维数组及遍历

二维数组:数组元素又是数组

◆ 一维数组:数组元素都是基础数据类型
◆ 二维数组:数组元素都是一维数组
◆ 二维数组访问:一维一层下标
◆ 一维访问:数组变量[下标] 得到的是数组
◆ 二维访问:数组变量[下标][下标]

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body></body><script>let angle = ["安琪拉", 18, "女", "仍个球"];let fox = ["妲己", 20, "女", "爱心"];let monkey = ["猴子", 22, "男", "棍子"];// 二维数组:将数组扔到数组里let hero = [angle, fox, monkey];console.log(hero);//    二维数组访问// 1.访问一维:数组变量[下标]console.log(hero[1]);// 2.访问二维:在第一维的基础上增加下标访问即可  数组变量[下标][下标]console.log(hero[1][0]);// 二维数组遍历:循环 里面  套循环for (let i = 0; i < hero.length; i++) {// i 是下标,hero[i] 访问元素:也是一个数组console.log(hero[i]);// hero[i] 是一个数组:可以遍历for (let j = 0; j < hero[i].length; j++) {// hero[i] 是一个数组,j 是数组下标  ,访问元素 hero[i][j]console.log(hero[i][j]);}}</script>
</html>

1.9 - 数组形式访问字符串

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body></body><script>let str = "我爱你中国";console.log(str);// 字符串:本质的存在是 数组,由下标和lengthconsole.log(str.length);console.log(str[0]);// 字符串具有恒定性:不可修改str[0] = "你";console.log(str); //无效// 变量可以被重新赋值:修改字符串就必须给字符串变量重新赋值str = "你爱我中国";console.log(str);// 总结// 以后但凡有 length 属性的东西,一定可以用数组的形式去访问(由下标):为开发者带来便捷性// 能访问不一定能修改(数组可以,其他都不行)</script>
</html>

2.0 - 案例:

01-九九乘法表

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body></body><script>// 需求:做九九乘法表// 九九乘法表 : 有行有列 (二维结构)for (let i = 1; i <= 9; i++) {// 循环:负责输出内容// 列的数量跟行有关:第几行就有几列for (let j = 1; j <= i; j++) {// i 代表行, j 代表列document.write(`${i} * ${j}  =  ${i * j}  &nbsp;`);}// 换行document.write(`<br>`);}</script>
</html>

02 - 动态生成柱状图

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>.box {display: flex;align-items: flex-end;justify-content: space-evenly;width: 1200px;height: 400px;border: 3px solid rgb(241, 30, 30);}/* .box > div {width: 400px;height: 300px;background-color: rgb(12, 221, 236);} */</style></head><body><!-- <div class="box"><div></div></div> --></body><script>// 1.获取用户输入let sum = +prompt("请输入柱状图柱子的数量");// 柱子宽度let width = 1200 / (sum * 2 + 1);// 渲染大盒子  一半document.write('<div class="box">');// 遍历每一个柱子for (let i = 0; i < sum; i++) {// 柱子的高度,颜色rgb都随机let h = Math.ceil(Math.random() * 400);let r = Math.round(Math.random() * 255);let g = Math.round(Math.random() * 255);let b = Math.round(Math.random() * 255);// 渲染柱子document.write(`<div style="width:${width}px;height:${h}px;background-color: rgb(${r}, ${g}, ${b});"></div>`);}// 结束渲染大盒子document.write("</div>");</script>
</html>

03- for循环 - 起始值,结束值 for (; start <= end; start++)

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>div {width: 100px;height: 100px;background-color: #6cf;float: left;margin: 10px;}</style></head><body></body><script>// 需求:用户指定要生成的div次数// let user = +prompt("请输入要生成的div数量");// for (let i = 0; i < user; i++) {//     document.write("<div></div>");// }let start = +prompt("请输入起始值:");let end = +prompt("请输入结束值:");for (; start <= end; start++) {document.write("<div></div>");}</script>
</html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=, initial-scale=1.0" /><title>Document</title></head><body></body><script>// // 求 1 - 10 之间的所有整数之和// // 定义一个空框// let num = 0;// // 遍历// for (let i = 1; i <= 10; i++) {//     // 求和//     num += i;// }// // 打印// console.log(num);let sum = 0;let start = +prompt("请输入初始值");let end = +prompt("请输入结束值");for (; start <= end; start++) {sum += start;console.log(start);}console.log(sum);</script>
</html>

循环补充

while循环结构

  • 1.语法:
while(条件 true/false){循环体/需要重复执行的代码;}
  • 执行步骤:

    • 1.判断条件是否成立

      • 1.1 如果成立,执行循环体代码,然后重复步骤1
      • 1.2 如果不成立,结束循环,执行大括号后面的代码
  • 3.注意点
    • (1)小括号中的语句,无论结果是什么都会转换成布尔类型来判断是否成立
    • (2)避免写一个死循环

do-while循环结构

  • 1.语法:
do{循环体;
}while( 条件 );
  • 2.执行过程

    • 1.先执行循环体代码
    • 2.执行条件语句
      • 如果结果为true,执行循环体代码
      • 如果为false,循环结束
    • 3.重复步骤2
  • 3.do-while和while实现的循环其实是一样的,只有一个不同点:do-while循环不管怎样先执行一次循环体代码,然后再判断条件
    • while循环:先奏后斩(先判断条件再执行循环体)
    • do-while循环:先斩后奏(不管怎样先执行一次循环体代码,然后再判断条件)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><script>/* 1. 学习目标 : do-while循环 2. 学习路线(1)复习while语法特点(2)学习do-while语法(3)介绍do-while语法应用场景*///1.while循环://let i = 1;// while(i > 5){//     //循环条件不成立,循环体一次都不执行//     console.log ( "哈哈哈哈" );//     i++// }//2.do-while循环/**do-while语法:(用的很少)do{循环体;}while( 条件 );特点:无论如何先执行一次循环体,然后再去判断条件*/let i = 1;do{console.log ( "呵呵呵呵呵" );i++;}while (i > 5);//while循环:先奏后斩(先判断条件再执行循环体)//do-while循环:先斩后奏(不管怎样先执行一次循环体代码,然后再判断条件)//3.do-while循环与while循环应用场景//无论如何需要先执行一次循环体,使用do-while代码更简洁//例子:让用户输入账号和密码,如果输入正确就登陆成功,如果输入错误就让他一直输入//while循环实现// let username = prompt('请输入账号');// let password = prompt('请输入密码');//// while(username != 'admin' || password != '123456'){//     username = prompt('请输入账号');//     password = prompt('请输入密码');// }//do-while实现do{let username = prompt('请输入账号');let password = prompt('请输入密码');}while(username != 'admin' || password != '123456')</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>循环补充</title></head><body></body><script>// while循环: 解决不确定次数的循环// while (条件 true / false) {//     循环体 / 需要重复执行的代码;//     一般, while循环都会结合break// }// 需求: 猜数字let rand = Math.ceil(Math.random() * 100); // 1-100// while循环: 不确定猜的次数let flag = true;// while (flag) {//     // 死循环//     let user = +prompt('请输入0-100之间的数字')//     if (user > rand) {//         alert('猜大了')//     } else if (user < rand) {//         alert('猜小了')//     } else {//         alert('猜中了,就是' + rand)//         // break                           // 结束循环//         flag = false//     }// }// 不论for循环还是while循环: 条件如果不满足: 循环不执行for (; false; ) {console.log("1");}// 需求: 循环必须执行,哪怕只有一次?// do {//     循环体;// } while (条件);// 先干了再说do {console.log(2);} while (false);// do-while的特点: 保证循环体一定执行1次(最少)// 循环体执行的次数 与条件判定的次数一样// 总结: 三种循环的选择// 1. 如果指定次数: for循环(有起始有结束)// 2. 如果不确定次数: while// for替代: for(;;){}// 3. 如果要求循环体必须执行: do-while// for替代: for(let flag = true; flag;){}</script>
</html>

三种循环结构总结

  • 1.原则上,三种循环结构语句之间可以互转,只不过每一种语句的适用场景不一样
  • 2.最常用:for循环:适合循环次数固定
  • 3.while循环:适合循环次数不固定
  • 4.do-while循环:适合循环次数不固定,但是循环体代码至少要执行一次

JavaScript - for 循环结构 与 数组相关推荐

  1. c 结构体在声明时赋值_Java基础知识 初识Java 循环结构进阶 数组 数据类型 各种运算符...

    今天给大家带来的是初级Java基础部分的知识:包括初始Java.变量.常量.数据类型.运算符.各种选择结构.循环结构.数组等Java的基础语法部分!最后还有****循环结构的进阶****,步骤超详细, ...

  2. php数组循环便利,浅析PHP中for与foreach两个循环结构遍历数组的区别

    遍历一个数组是编程中最常见不过的了,这里跟大家讨论下for和foreach两种方法.用这两种方法执行遍历的场景太多太多了,这里我们只针对以下两个数组作为例子来讨论.所谓管中窥豹,多少能理清一点两者的区 ...

  3. LuaForUnity3:Lua的分支结构、循环结构与数组

    一.分支结构与循环结构 如果学过C/C++/C#就很简单了,代码中有注释 print("-----------------------------------------------&quo ...

  4. Labview循环结构创建数组的例子

    创建数组过程中可能会出现很多重复的内容,所以,大多时候可以利用循环结构来创建数组.下面通过生成100以内的随机整数创建一个4×4的二维数组.可按照以下步骤进行. 步骤一 创建一个VI,在程序框图中添加 ...

  5. C语言基础1(数据类型、常变量、运算符、基本语句、选择结构、循环结构、数组、字符串、函数、指针)

    数据类型及运算 数据类型 一.整形(int) 整形变量的定义.输入和输出 打印格式 含义 %d 输出一个有符号的10进制int类型 %o(字母o) 输出8进制的int类型 %x 输出16进制的int类 ...

  6. java数组循环_Java之循环结构及数组

    循环结构 for循环for(条件初始化;条件判断;条件变化){ 重复执行的代码: } for循环的执行流程: 1.条件初始化 2.条件判断 3.不满足条件结束循环,满足条件执行,执行循环体语句 4.条 ...

  7. java笔记(基础+修饰符+选择结构+分支结构+循环结构+方法+数组+面对对象+三大特性)

    文章目录 语言基础 变量 概念 全局变量 局部变量 实例变量 声明 数据类型 常用 基本数据类型 引用数据类型 Unicode编码表 ASCII字符表 运算符 算术运算符 赋值运算符 关系运算符 逻辑 ...

  8. java基础知识之循环结构与数组

    1.for循环:for(循环变量的初始化1:循环的条件2:循环变量的变化3){ 循环体4: } 执行顺序为:1,2,4,3,2,4,3,2,4,3,2,4,3.....当2为false时结束循环 2. ...

  9. Javascript开发技巧(JS中的变量、运算符、分支结构、循环结构)

    一.Js简介和入门 继续跟进JS开发的相关教程. <!-- [使用JS的三种方式] 1.HTML标签中内嵌JS(不提倡使用): 示例:<button οnclick="javas ...

最新文章

  1. 互联网大厂技术面试内幕@霞落满天
  2. oracle profile
  3. 又一个高等级数据中心着火了!
  4. 【Round #36 (Div. 2 only) B】Safe Spots
  5. 旧项目适配iphone6和iphone plus
  6. 软件测试中需求分析谁去做的,软件项目在进入需求分析阶段,测试人员应该开始介入其中。 - 问答库...
  7. LevelDb实现原理
  8. JAVA入门级教学之(你是否理解HelloWorld的这段经典的代码的注释)
  9. “骗子”成民企院士第一人:把认真当信仰,人生就会开挂
  10. unixODBC配置文件
  11. mysql中的trigger
  12. ipc-rpc-xmlrpc
  13. C++ 复杂、内存漏洞,2019 年的软件开发并不安全!
  14. 手把手教你搭建FastDFS集群(上)
  15. libav(ffmpeg)简明教程(1)
  16. Synchronized快
  17. GB28181协议——布防和报警订阅
  18. 游戏测试-笔试/面试(一)
  19. 智能AI源码机器人电销机器人智能电话机器人拨号机器人语音机器人
  20. 朴素贝叶斯——R语言

热门文章

  1. C# 调用 速印标签标准版 的模板lbl文件
  2. Ext js 4 全选和反选
  3. ext 中checkbox 无法取消选中行,全选按钮全选问题
  4. C++设计模式——访问者模式(高屋建瓴)
  5. 加权平均值与平均值_如何在Excel中计算加权平均值
  6. 诺基亚n8和n9java_诺基亚官方发布 N8与N9的十大区别
  7. 公众号运营技巧:大V的公众号都是怎么运营的?
  8. 微信公众号运营错误的四个方式
  9. IBM JDK的Java堆空间的碎片问题
  10. 显示行数 设置ssh终端_mac下终端iTerm2配置