HTML+JavaScript-04

news2024/9/29 23:32:42

JavaScript中的循环

for语句

一个for循环会一直执行,直到循环条件为false

for(let i=0; i<=array.length-1; i++){//当遍历完数组后结束循环
    console.log(array[i] + "<br/>");//循环语句
}

do...while语句

do...while 语句一直重复直到指定的条件求值得到假值(false)

以下示例中,这个 do 循环将至少重复一次,并且一直重复直到 i 不再小于 5。

var i = 0;
do{
    i++;
}while(i < 5);
console.log(i);//循环结束i==5

while语句

一个 while 语句只要指定的条件求值为真(true)就会一直执行它的语句块。

示例

只要 n 小于 3,下面的 while 循环就会一直执行:

var n = 0;
var x = 0;
while (n < 3) {
  n++;
  x += n;
}

在每次循环里, n 会增加 1,并被加到 x 上。所以,x 和 n 的变化是:

  • 第一次完成后:n = 1,x = 1
  • 第二次完成后:n = 2,x = 3
  • 第三次完成后:n = 3,x = 6

在三次完成后,条件 n < 3 的结果不再为真,所以循环终止了。

label 语句

一个 label 提供了一个让你在程序中其他位置引用它的标识符。例如,你可以用 label 标识一个循环,然后使用 break 或者 continue 来指出程序是否该停止循环还是继续循环。

break语句

break用来终止循环。

for (let i = 1; i <= 5; i++) {
    console.log('外层循环,第 ' + i + ' 次迭代');
    
    for (let j = 1; j <= 3; j++) {
        console.log('  内层循环,第 ' + j + ' 次迭代');
        
        // 当 j 等于 2 时,使用 break 中断内层循环
        if (j === 2) {
            break;
        }
    }

    // 当 i 等于 3 时,使用 break 中断外层循环
    if (i === 3) {
        break;
    }
}

在这个例子中,外层循环迭代了5次,内层循环迭代了3次。当内层循环的 j 等于 2 时,使用 break 中断内层循环,而当外层循环的 i 等于 3 时,使用 break 中断外层循环。这就展示了如何在循环中使用 break 来提前终止循环的执行。

continue语句

continue 语句可以用来继续执行(跳过代码块的剩余部分并进入下一循环)一个 whiledo-whilefor,或者 label 语句。

  • 当你使用不带labelcontinue 时,它终止当前 whiledo-while,或者for语句到结尾的这次的循环并且继续执行下一次循环。
  • 当你使用带labelcontinue 时,它会应用被label标识的循环语句。
for (let i = 1; i <= 5; i++) {
    // 当 i 等于 3 时,使用 continue 跳过当前迭代,进入下一次迭代
    if (i === 3) {
        console.log('跳过第 ' + i + ' 次迭代');
        continue;
    }
    console.log('当前迭代:' + i);
}

for...in语句

for...in 语句循环一个指定的变量来循环一个对象所有可枚举的属性。JavaScript 会为每一个不同的属性执行指定的语句。

示例

function Person(name, age, sex) {
    this.name = name;
    this.age = age;
    this.sex = sex;
}
var jerry = new Person("jerry", 14, "女");
for (let key in jerry) {
    console.log(key + ":" + jerry[key]);
}

image-20240122181411556

建议使用for循环来获取数组中的元素

for...of 语句

for...of 语句在可迭代对象(包括ArrayMapSetarguments 等等)上创建了一个循环,对值的每一个独特属性调用一次迭代。

案例-1-5次成绩

// 循环录入五次成绩,求和 求平均值 求最大值 求最小值
let min = 0,
    max = 0,
    average = 0,
    sum = 0,
    num = 0;
for (let i = 1; i <= 5; i++) {
    num = Number(prompt("请输入第" + i + "次成绩"));
    sum += num;
    if (i == 1) {
        min = num;
        max = num;
    }
    if (max < num) {
        max = num;
    }
    if (min > num) {
        min = num;
    }

}
average = sum / 5;
document.write("五次成绩的和=" + sum + "<br/>");
document.write("五次成绩的平均值=" + average + "<br/>");
document.write("五次成绩的最大数=" + max + "<br/>");
document.write("五次成绩的最小数=" + min);

image-20240122182103203

案例-2-回文数

let num = 0;
for (let i = 10000; i <= 99999; i++) {
    let ge = i % 10;
    let shi = parseInt(i / 10) % 10;
    let qian = parseInt(i / 1000) % 10;
    let wan = parseInt(i / 10000) % 10;
    if (ge == wan && shi == qian) {
        document.writeln(i);
        num++;
    }
}
document.write("5位数的回文数共有" + num + "个");

image-20240122182016580

案例-3-水仙花

let a = 0, b = 0, c = 0;
let sum = 0;
for (let i = 100; i <= 999; i++) {
    a = parseInt(i / 100);
    b = parseInt((i / 10) % 10);
    c = i % 10;
    sum = a * a * a + b * b * b + c * c * c;
    if (sum == i) {
        console.log("水仙花数:" + i);
    }
}

image-20240122182327498

案例-4-1-1000以内的所有奇数和偶数

document.write("1-1000以内的所有奇数:<br/>");
for (let i = 1; i <= 500; i++) {
    document.write(2 * i - 1);
    document.write("&nbsp;");
    if (i % 40 == 0) {
        document.write("<br/>");
    }
}
document.write("<br/>1-1000以内的所有偶数:<br/>");
for (let i = 1; i <= 500; i++) {
    document.write(2 * i);
    document.write("&nbsp;");
    if (i % 40 == 0) {
        document.write("<br/>");
    }
}

image-20240122182512392

案例-5-公倍数、公因数

let a = Number(prompt("请输入数a:"));
let b = Number(prompt("请输入数b:"));

// 先求出最大最小值
let max = a > b ? a : b;
let min = a < b ? a : b;

// 最小公倍数
let minGbs;
for (let i = max; i < i + 1; i++) {
    if (i % a == 0 && i % b == 0) {
        minGbs = i;
        break;
    }
}
document.writeln("最小公倍数=" + minGbs);

let maxGys;

// 最大公因数
for (let i = min; i >= 1; i--) {
    if (a % i == 0 && b % i == 0) {
        maxGys = i;
        break;
    }
}
document.write("最大公因数:" + a);

案例-6-百文买百鸡

let sum = 0;
let number = 0;

for (let gj = 1; gj <= 50; gj++) {
    for (let mj = 1; mj <= 100; mj++) {
        for (let xj = 1; xj <= (100 - gj - mj); xj++) {
            number++;
            if (gj + mj + xj == 100 && gj * 2 + mj * 1 + xj * 0.5 == 100) {
                console.log("公鸡" + gj + "母鸡" + mj + "小鸡" + xj);
                sum++;
            }
        }
    }
}

console.log("符合条件的组合数量:" + sum);
console.log("尝试的组合总数:" + number);

image-20240122183406693

案例-7-鸡兔同笼

let sum = 0;
let number = 0;
for (let chicken = 1; 2 * chicken <= 100; chicken++) {
    for (let rabbit = 1; 4 * rabbit <= 100 - chicken; rabbit++) {
        if (2 * chicken + 4 * rabbit == 100) {
            // document.write("鸡" + chicken + "兔" + rabbit + "<br/>");
            console.log("鸡" + chicken + "兔" + rabbit);
            number++;
        }
    }
}
// document.write("有" + number + "种可能");
console.log("有" + number + "种可能");

image-20240122183629655

案例-8-99乘法表

for (let i = 1; i <= 9; i++) {
    for (let j = 1; j <= i; j++) {
        document.write(i + "*" + j + "=" + i * j+"&nbsp;&nbsp;&nbsp;&nbsp;");
    } document.write("<br/>");
}

image-20240122183740779

案例-9-篮球下落问题

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>篮球下落问题</title>
</head>

<body>
    <div>篮球从5米高的地方掉下来,每次弹起的高度是原来的30%,经过几次弹起,篮球队高度小于0.1米</div>
    <script>
        let number = 0;
        for (let heigt = 5; heigt >= 0.1;) {
            heigt = 0.3 * heigt;
            number++;
        }
        document.write("经过" + number + "次,篮球的高度小于0.1米")
    </script>
</body>

</html>

image-20240122183956490

案例-10-折纸厚度超过玛峰

let heigt = 0.0002;
let number = 0;//折纸次数
for (heigt; heigt <= 8848;) {
    heigt = 2 * heigt;
    number++;
}
// document.write("厚度0.0002的纸折叠" + number + "次,纸的厚度能超过珠穆朗玛峰的高度");
console.log("厚度0.0002的纸折叠" + number + "次,纸的厚度能超过珠穆朗玛峰的高度");

image-20240122184139960

案例-11-1-100内的质数

let number = 0;
for (let i = 2; i <= 100; i++) {
    let flag = true;
    for (let j = 2; j < i; j++) {
        if (i % j == 0) {
            flag = false;
            break;
        }
    }
    if (flag) {
        // document.write(i + "<br/>");
        number++;
    }
}
// document.write("共有" + number + "个质数");
console.log("1-100内共有" + number + "个质数");

image-20240122184532025

案例-12-摄氏度华氏度对照表

let celsius = 0;
let count = 0;

do {
    const huaShi = celsius * 9 / 5 + 32;
    // document.write("摄氏温度:" + celsius + "度,华氏温度:" + huaShi + "度<br/>");
    console.log("摄氏温度:" + celsius + "度,华氏温度:" + huaShi + "度<br/>");
    celsius += 20;
    count++;
} while (celsius <= 250 && count < 10);

image-20240122184716925

案例-13-兔子繁殖问题

模拟斐波那契数列中兔子繁殖的情况。每个月都有一对兔子,从第三个月开始,每对兔子都会生一对新的兔子。

let a = 1;
let b = 1;
let c = 0;

for (let i = 1; i <= 10; i++) {
    if (i <= 2) {
        console.log("第" + i + "个月有" + a + "对兔子");
    } else {
        c = a + b;
        console.log("第" + i + "个月有" + c + "对兔子");
        a = b;
        b = c;
    }
}

image-20240122185148025

案例-14-循环求和

计算级数 sum = 1 - 1/2 + 1/3 - 1/4 + 1/5 - … + 1/99 的值

let sum = 0;

for (let i = 1; i <= 50; i++) {
    sum += 1 / (2 * i - 1);
}

for (let j = 1; j < 50; j++) {
    sum -= 1 / (2 * j);
}

console.log(sum);

image-20240122185453470

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1413818.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解Redis:如何设置缓存数据的过期时间及其背后的机制

目录 Redis 给缓存数据设置过期时间 Redis是如何判断数据是否过期的呢&#xff1f; 过期的数据的删除策略 Redis 内存淘汰机制 Redis 给缓存数据设置过期时间 一般情况下&#xff0c;我们设置保存的缓存数据的时候都会设置一个过期时间。为什么呢&#xff1f; 因为内存是有…

shell编程-7

shell学习第7天 sed的学习1.sed是什么2.sed有两个空间pattern hold3.sed的语法4. sed里单引号和双引号的区别:5.sed的查找方式6.sed的命令sed的标签用法sed的a命令:追加sed的i命令:根据行号插入sed的c命令:整行替换sed的r命令sed的s命令:替换sed的d命令:删除sed中的&符号 7…

Ubuntu20.04添加桌面启动、侧边栏启动和终端启动

桌面启动 新建XX.desktop文件 在桌面新建一个XX.desktop文件&#xff0c;以QtCreator为例。 &#xff08;注意这里不能使用sudo&#xff0c;因为这样会把文件的权限归为root&#xff0c;导致后续设置可执行程序不方便&#xff09; gedit qtcreator.desktop在XX.desktop文件中…

算子:详细篇

目录 一、执行环境 1.1 创建执行环境 1.2 执行模式 二、源算子 2.1 从集合中读取数据 2.2 从文件读取数据 2.3 从socket读取数据 2.4 从kafka读取数据 三、转换算子 3.1 基本转换算子 &#xff08;1&#xff09;映射(map) &#xff08;2&#xff09;过滤(filter) &#xff08…

数据结构与算法教程,数据结构C语言版教程!(第六部分、数据结构树,树存储结构详解)二

第六部分、数据结构树&#xff0c;树存储结构详解 数据结构的树存储结构&#xff0c;常用于存储逻辑关系为 "一对多" 的数据。 树存储结构中&#xff0c;最常用的还是二叉树&#xff0c;本章就二叉树的存储结构、二叉树的前序、中序、后序以及层次遍历、线索二叉树、…

ASP.NET 7 Core Web 读取appsetting.json

把一些配置信息保存在json文件可以避免更改时要重新发布程序的烦恼。 我这里使用的是写一个类文件&#xff0c;然后通过program.cs启动的方式&#xff08;.net 6 开始没有startup了&#xff09;。 项目类型&#xff1a;ASP.NET Core Web MVC / .NET 7.0 / VS2022 第一步…

架构学习(一):scrapy实现按脚本name与日期生成日志文件

原生scrapy日志机制 一般情况下&#xff0c;我们可以直接在setting文件中定义日志文件&#xff0c;这种会把所有脚本的日志都写在同一个文件 LOG_LEVEL INFO # 日志级别 LOG_STDOUT True # 日志标准输出 LOG_FILE rD:\python\crawler\logs\1163.log # 日志文件路径现在…

少儿编程 2023年12月电子学会图形化编程等级考试Scratch一级真题解析(选择题)

2023年12月scratch编程等级考试一级真题 选择题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 1、观察下列每个圆形中的四个数&#xff0c;找出规律&#xff0c;在括号里填上适当的数 A、9 B、17 C、21 D、5 答案&#xff1a;C 考点分析&#xf…

niushop靶场漏洞查找-文件上传漏洞等(超详细)

实战漏洞-niushop 一.端口扫描 http://www.xxx.com/index.php?s/admin/login 这里查询到后面的url有且仅有一个&#xff0c;目测估计是后台 访问url 发现确实是后台 二、找漏洞 Sql注入漏洞1&#xff1a; 点击进去 修改id www.xxx.com/index.php?s/goods/goodslist&…

automa插件使用的一些实战经验3

1 子流程的变量怎么传回父流程 主流程向子流程传参很容易 在子流程可以看到&#xff0c;父流程定义的表格&#xff0c;在子流程中是看不到的&#xff0c;那么子流程定义的变量如何传回父流程呢&#xff1f;另外在子流程再添加执行工作流&#xff0c;是无法选择父流程本身&…

惊了!用vue开发官网,以前我觉得胡闹,现在觉得未尝不可。

以前&#xff0c;有人做好官网UI&#xff08;展示性&#xff0c;没啥功能&#xff09;&#xff0c;找我开发前端&#xff0c;说要vue来做&#xff0c;我都劝了。 基于以下四个原因&#xff1a; 1、官网毕竟还是考虑seo的&#xff0c;流量多少算多少&#xff0c;总比没有强&am…

如何使用 dotnet pack 打包 .NET 跨平台程序集?

如何使用 dotnet pack 打包 .NET 跨平台程序集&#xff1f; dotnet pack 介绍官方描述 dotnet pack 命令说明使用示例打包 .net 类库项目生成带注释的 nuget 包构建特定平台的 nuget 包关于 .NET RID 目录 dotnet pack 介绍 dotnet pack 是一个 .NET Core NuGet 包打包程序。 …

鸿蒙开发初体验

文章目录 前言一、环境配置1.1 安装DevEco Studio1.2 安装相关环境 二、工程创建三、工程结构介绍四、代码实现4.1 初识ArkTs4.2 具体实现 参考资料 前言 HarmonyOS是华为公司推出的一种操作系统&#xff0c;旨在为不同设备提供统一的操作系统和开发平台。鸿蒙开发的出现为用户…

3d gaussian splatting笔记(paper部分翻译)

本文为3DGS paper的部分翻译。 基于点的&#x1d6fc;混合和 NeRF 风格的体积渲染本质上共享相同的图像形成模型。 具体来说&#xff0c;颜色 &#x1d436; 由沿射线的体积渲染给出&#xff1a; 其中密度 &#x1d70e;、透射率 &#x1d447; 和颜色 c 的样本是沿着射线以…

排序(插入排序)

现在&#xff0c;我们学习了之前数据结构的部分内容&#xff0c;即将进入一个重要的领域&#xff1a;排序&#xff0c;这是一个看起来简单&#xff0c;但是想要理清其中逻辑并不简单的内容&#xff0c;让我们一起加油把&#xff01; 排序的概念及其运用 排序的概念 排序&…

贾玲新片刚刚发出紧急声明,是什么情况。

♥ 为方便您进行讨论和分享&#xff0c;同时也为能带给您不一样的参与感。请您在阅读本文之前&#xff0c;点击一下“关注”&#xff0c;非常感谢您的支持&#xff01; 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 1月22日&#xff0c;一则“多位明星参演的电影涉影视投资诈骗…

浅谈WPF之样式与资源

WPF通过样式&#xff0c;不仅可以方便的设置控件元素的展示方式&#xff0c;给用户呈现多样化的体验&#xff0c;还简化配置&#xff0c;避免重复设置元素的属性&#xff0c;以达到节约成本&#xff0c;提高工作效率的目的&#xff0c;样式也是资源的一种表现形式。本文以一个简…

ARKit 3D 物体检测跟踪

3D 物体检测跟踪 3D物体检测跟踪技术&#xff0c;是指通过计算机图像处理和人工智能技术对摄像机拍摄到的3D物体识别定位并对其姿态进行跟踪的技术。3D物体跟踪技术的基础也是图像识别&#xff0c;但比前述2D 图像检测、识别、跟踪要复杂得多&#xff0c;原因在于现实世界中的物…

【网络协议测试】畸形数据包——圣诞树攻击(DOS攻击)

简介 TCP所有标志位被设置为1的数据包被称为圣诞树数据包&#xff08;XMas Tree packet&#xff09;&#xff0c;之所以叫这个名是因为这些标志位就像圣诞树上灯一样全部被点亮。 标志位介绍 TCP报文格式&#xff1a; 控制标志&#xff08;Control Bits&#xff09;共6个bi…

单调栈第二天(还没写完)

503.下一个更大元素II 力扣题目链接(opens new window) 给定一个循环数组&#xff08;最后一个元素的下一个元素是数组的第一个元素&#xff09;&#xff0c;输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序&#xff0c;这个数字之后的第一个比它更…