JavaScript for循环与数组

117 阅读2分钟

JavaScript for循环与数组

for循环

for循环和while循环区别:

当如果明确了循环的次数的时候推荐使用for循环

当不明确循环的次数的时候推荐使用while循环

        for (起始条件; 循环条件; 变化量) {
            循环体
        }
        let i = 1
        while (i <= 10) {
            document.write(i)
            document.write('<br>')
            i++
        }

        for (let i = 1; i <= 10; i++) {
            document.write(i)
            document.write('<br>')
        }
for循环求和
        let sum = 0  //箩筐思想

        for (let i = 1; i <= 100; i++) {
            // sum = sum + i
            // 判断一个偶数
            if (i % 2 === 0) {
                sum += i
            }
        }
        document.write(sum)   //打印

for 循环嵌套

        // 循环嵌套
        for (let i = 1; i <= 3; i++) {
            document.write(`今天是第${i}天<br>`)

            for (let j = 1; j <= 5; j++) {  
                // 因为嵌套关系此时必须重新声明变量 j
                document.write(`我记住了今天第${j}个单词<br>`)
            }

            document.write(`<br>`)
        }

image.png

循环语句的跳出

break和continue

  • break: 一般用于结果已经得到, 后续的循环不需要的时候可以使用
  • continue: 一般用于排除或者跳过某一个选项的时候, 可以使用continue

数组的使用

数组本质是数据集合,使用无非就是增删改查

  • 数组[下标]

  • 数组[下标] = 新值

  • arr.push(新增的内容) 数组末尾增加数据元素 开发中常用

  • arr.unshift(新增的内容) 数组开头增加数据元素利

  • pop() 方法从数组中删除最后一个元素,并返回该元素的值 不带参数
  • shift() 方法从数组中删除第一个元素,并返回该元素的值 不带参数
  • arr.splice(起始位置, 删除的个数)

案例_遍历数组

        let a = ['李狗蛋', '张翠花', '赵铁柱']
        for (let i = 0; i < a.length; i++) {
            console.log(i, a[i]);
        }

案例_数组求和

        // 数组求和 和 平均值 案例
        let arr = [2, 6, 1, 7, 4]

        // 箩筐思想
        // 声明一个变量 箩筐
        let sum = 0

        for (let i = 0; i < arr.length; i++) {
            // sum = sum + arr[i]
            sum += arr[i]
        }
        document.write(`和为${sum},平均值是${sum / arr.length}`)

案例_求数组最大最小值

        let arr = [100, 1000, 1, 77, 52, 25, 7]

        // 1. 创建擂主
        let max = arr[0]
        let min = arr[0]

        for (let i = 1; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i]
            }
            if (arr[i] < min) {
                min = arr[i]
            }
        }
        console.log(`最大值为${max},最小值为${min}`);

___________________________________________________________________
	
// 2.三元表达式求最大值  循环遍历数组 如果遍历数组中的元素大于max值,则将该项赋值给max,然后继续比较, 知道循环结束
	    let arr = [11100, 1000, 1, 77, 522222, 25, 7]
        // 先定义数组中下标为0的元素为最大值
        let max = arr[0]  //此时max是数组中的第一位

        for (let i = 1; i < arr.length; i++) {
            max = arr[i] > max ? arr[i] : max
        }
        document.write(max)

案例_筛选数组一

        // 将数组  [2, 0, 6, 1, 77, 0, 52, 0, 25, 7] 中大于等于 10 的元素选出来,放入新数组
        // 1. 准备一个空数组
        let newArr = []
        // 2. 创建筛选数组
        let arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]

        // 循环遍历
        for (let i = 0; i < arr.length; i++) {
            // 如果遍历的当前项目 大于等于10 
            if (arr[i] >= 10) {
                // 我要把当前项推入到newArr中
                newArr.push(arr[i])
            }
        }
        console.log(newArr);

案例_筛选数组二

        // 将数组 [2, 0, 6, 1, 77, 0, 52, 0, 25, 7] 中的 0 去掉后,形成一个不包含 0 的新数组

        let arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]
        let newArr = []  //准备新的空数组

        for (let i = 0; i < arr.length; i++) {  //遍历数组
            if (arr[i] !== 0) {  //筛选不等于0的数组
                newArr.push(arr[i])  //把筛选出的新数组加入新的空数组中
            }
        }

        console.log(newArr);

案例_冒泡排序

        let arr = [5, 4, 3, 2, 1]
        for (let i = 1; i <= arr.length - 1; i++) {  
            // 规律
            // 外层循环轮次 = 数组长度 - 1   (arr.length - 1)
            // 内层循环轮次 = 数组的长度 - 当前的轮次 (arr.length - i)

            for (let j = 1; j <= arr.length - i; j++) {
        
                if (arr[j - 1] > arr[j]) {
             // 如果(索引0(数字5) > 索引1(数字4))
             // 调换操作 临时=前  前=后  后=临时
                    
                    let temp = arr[j - 1]
                    arr[j - 1] = arr[j]
                    arr[j] = temp
                }
            }
        }
        console.log(arr);

案例_根据数据生成柱形图

<!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>
        * {
            margin: 0;
            padding: 0;
        }

        .box {
            position: relative;
            display: flex;
            width: 700px;
            height: 300px;
            border-left: 5px solid #6cf;
            border-bottom: 5px solid #6cf;
            margin: 200px auto;
            justify-content: space-around;
            align-items: flex-end;
            text-align: center;
        }

        .box::before {
            content: "";
            position: absolute;
            left: -13px;
            top: -25px;
            border: 10px solid transparent;
            border-bottom: 20px solid #6cf;
        }

        .box::after {
            content: "";
            position: absolute;
            right: -23px;
            bottom: -12px;
            border: 10px solid transparent;
            border-left: 20px solid #6cf;
        }

        .box>div {
            display: flex;
            width: 50px;
            background-color: #6cf;
            flex-direction: column;
            justify-content: space-between;
        }

        .box div span {
            margin-top: -30px;
        }

        .box div h4 {
            margin-bottom: -35px;
            width: 70px;
            margin-left: -10px;
        }
    </style>
</head>

<body>

    <!-- <div class="box">
        <div style="height: 123px;">
            <span>123</span>
            <h4>第1季度</h4>
        </div>
        <div style="height: 300px;">
            <span>300</span>
            <h4>第2季度</h4>
        </div>
        <div style="height: 120px;">
            <span>120</span>
            <h4>第3季度</h4>
        </div>
        <div style="height: 210px;">
            <span>210</span>
            <h4>第4季度</h4>
        </div>
    </div> -->


    <script>
        // 用户要输入4个季度的数据 生成柱形图
        // 用户输入 prompt
        // 弹出 4次 -> for循环
        // 把数据渲染在页面 生成柱形图 dw


        let data = []  //创建新的空数组收集信息

        for (let i = 1; i <= 4; i++) {
            data.push(+prompt(`请输入第${i}季度数据`))
            //循环4次,并存入data空数组中
        }

        // console.log(data);  验证是否成功收集到数组

        document.write(`<div class="box">`)  //打印大盒子

        for (let i = 1; i <= data.length; i++) {
            //设置循环次数为数组的长度  
            document.write(`   
            <div style="height: ${data[i - 1]}px;">
                <span>${data[i - 1]}</span>
                <h4>第${i}季度</h4>
            </div>
            `)   //调用之前变量
        }

        document.write(`</div>`)
    </script>



</body>

</html>