实际开发中,for用的要比while更多。
ex:
<script>
// for (起始条件;退出条件;变化量) {
// 循环语句
// }
for (let i = 1; i <= 10; i++) {
document.write(`月薪过万 <br>`)
}
</script>
循环练习:
练习1:
for (let i = 1; i <= 100; i++) {
document.write(`${i}岁 <br>`)
}
练习2:
let sum = 0
for (let i = 1; i <= 100; i++) {
if (i % 2 === 0) {
sum += i
}
}
document.write(sum)
练习3:
for (let i = 1; i<= 5; i++) {
document.write(`⭐`)
}
练习4:
以前是这么写的:
但是如果用上for循环就会简易很多
代码:
let arr = ['马超', '赵云', '张飞', '关羽', '黄忠']
for (let i = 0; i <= 4; i++) {
document.write(`名字是:${arr[i]} <br>`)
}
循环还有一个叫法,遍历。
循环最大的价值就是遍历数组。
arr.length 数组的长度,通过它可以告诉我们数组里有几个元素。将它放到代码里,帮助自动检测元素数量。
let arr = ['马超', '赵云', '张飞', '关羽', '黄忠']
for (let i = 0; i < arr.length; i++) {
document.write(`名字是:${arr[i]} <br>`)
}
document.write(arr.length)
循环小结:
for循环的退出循环:
continue和break在退出循环中的不同:
<script>
for (let i = 1; i < 6; i++) {
if (i === 2) {
// continue // 退出本次循环,继续后面的循环,最后输出1345
break // 结束循环 退出整个循环 最后只输出1
}
document.write(i)
}
</script>
循环嵌套:
for循环嵌套:
for循环嵌套for循环,外部循环一次,里面循环执行全部,所以最后打印25个星
记忆单词案例:(每天背五个单词,一共三天)
<script>
/* 记忆单词案例
分析
1.外面的循环 记录第n天 */
for (let i = 1; i < 4; i++) {
document.write(`第${i}天 <br>`)
// 2. 里层的循环记录 几个单词
for (let j =1; j < 6; j++) {
document.write(`记住第${j}个单词 <br>`)
}
}
</script>
for循环嵌套练习:
练习1:
代码:
<script>
// 打印5行5列的星星
for (let i = 1; i < 6; i++ ) {
for (let j = 1; j < 6; j++) {
document.write(`⭐`)
}
document.write(`<br>`)
}
</script>
练习2:(打印倒三角形星星)
代码:
// 外层打印几行
for (let i = 1; i <= 5; i++ ) {
// 里层打印几个星星
for (let j = 1; j <= i; j++) {
document.write(`⭐`)
}
document.write(`<br>`)
}
练习3:
代码:
<style>
div {
display: inline-block;
height: 25px;
line-height: 25px;
margin: 5px;
background-color: pink;
padding: 0 10px;
border: 1px solid hotpink;
color: deeppink;
border-radius: 5px;
box-shadow: 2px 2px 2px rgba(0, 0, 0, .2);
text-align: center;
}
</style>
</head>
<body>
<script>
let x = `*`
for (let i = 1; i <= 9; i++ ) {
for (let j = 1; j <= i; j++) {
let re = j * i
document.write(`
<div>${j} × ${i} = ${re} </div>
`)
}
document.write(`<br>`)
}
</script>
效果:
左边粉色的是效果图。
数组:
<script>
let arr = [2,6,1,7,4]
let sum = 0
let ave
for (let i = 0; i < arr.length; i++) {
sum += arr[i]
}
ave = sum / arr.length
document.write(sum)
document.write(`<br>`)
document.write(ave)
</script>
<script>
let arr = [2,6,1,77,52,25,7]
let max = arr[0]
for (let i = 1; i < arr.length ; i++) {
if (max < arr[i]) {
max = arr[i]
}
}
document.write(max)
</script>
操作数组:
案例:
<script>
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] >= 10) {
// 满足条件的,依次追加给心的数组
newArr.push(arr[i])
}
}
document.write(newArr)
</script>
案例:
<script>
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) {
newArr.push(arr[i])
}
}
document.write(newArr)
</script>
删除的使用场景:
数组案例:(冒泡排序)
<script>
let arr = [2, 6, 4, 3, 5, 1]
// 1. 外层循环控制 趟数 循环 4次 arr.length - 1
for (let i = 0; i < arr.length - 1; i++) {
// 2. 里层的循环 控制 一趟交换几次 arr.length - i - 1 次序
for (let j = 0; j < arr.length - i - 1; j++) {
// 交换两个变量
// arr[j] arr[j + 1]
if (arr[j] > arr[j + 1]) {
let temp = arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = temp
}
}
}
console.log(arr)
// 复习变量
// let num1 = 10
// let num2 = 20
// let temp = num1
// num1 = num2
// num2 = temp
</script>
综合案例-柱状图
<!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 {
display: flex;
width: 700px;
height: 300px;
border-left: 1px solid pink;
border-bottom: 1px solid pink;
margin: 50px auto;
justify-content: space-around;
align-items: flex-end;
text-align: center;
}
.box>div {
display: flex;
width: 50px;
background-color: pink;
flex-direction: column;
justify-content: space-between;
}
.box div span {
margin-top: -20px;
}
.box div h4 {
margin-bottom: -35px;
width: 70px;
margin-left: -10px;
}
</style>
</head>
<body>
<!-- <div style="height: 123px;">
<span>123</span>
<h4>第1季度</h4>
</div>
<div style="height: 156px;">
<span>156</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> -->
<script>
// 1. 利用循环弹出四次输入框, 会得到4个数据,放到数组里面
let arr = []
for (let i = 1; i <= 4; i++) {
// prompt(`请输入第 ${i} 季度的数据`) === 123
arr.push(prompt(`请输入第 ${i} 季度的数据`))
}
// console.log(arr)
// 注意我们渲染循环的是柱子
document.write(`<div class="box">`)
// 循环4个柱子
for (let i = 0; i < arr.length; i++) {
document.write(`
<div style="height: ${arr[i]}px;">
<span>${arr[i]}</span>
<h4>第${i + 1}季度</h4>
</div>
`)
}
document.write(`</div>`)
</script>
</body>
</html>
课后练习:
<script>
// 1. 练习1: 使用for循环 - 求出数组元素的和 [5, 8, 9, 2, 1, 5]
let arr = [5, 8, 9, 2, 1, 5]
let sum = 0
for (let i = 0;i < arr.length;i++) {
sum += arr[i]
}
document.write(sum)
// 2. 练习2: 使用for循环 - 求出数组里大于5的和 [4, 9, 5, 20, 3, 11]
let arr = [4,9,5,20,3,11]
let sum = 0
for (let i = 0; i < arr.length;i++) {
if (arr[i] > 5) {
sum += arr[i]
}
}
document.write(sum)
// 练习3: 使用for循环 - 求出班级里同学们平均年龄[15, 19, 21, 33, 18, 24]
let arr = [15,19,21,33,18,24]
let pj
let sum = 0
for (let i = 0; i < arr.length;i++) {
sum += arr[i]
}
pj = sum / arr.length
document.write(pj)
// 练习4: 打印数组里所有的奇数 [5, 2, 8, 10, 3, 7]
let arr = [5,2,8,10,3,7]
for (let i = 0;i < arr.length;i++) {
if (arr[i] % 2 !== 0) {
document.write(`${arr[i]} <br>`)
}
}
// 练习5: 计算[2, 6, 18, 15, 40] 中能被3整除的偶数的和
let arr = [2,6,18,15,40]
let sum = 0
for (let i = 0;i < arr.length;i++) {
if (arr[i] % 3 === 0 && arr[i] % 2 === 0) {
sum += arr[i]
}
}
document.write(sum)
// 练习6: 计算[2, 6, 18, 15, 40] 中能被3整除的偶数的个数
let arr = [2,6,18,15,40]
let j = 0
for (let i = 0;i < arr.length;i++) {
if (arr[i] % 3 === 0 && arr[i] % 2 === 0) {
j++
}
}
document.write(j)
// 练习7:给一个数字数组,该数组中有很多数字0,将不为0的数据存入到一个新的数组中
let arr = [2,6,0,18,21,15,0,40,0]
let newArr = []
for (let i = 0;i < arr.length;i++) {
if (arr[i] !== 0) {
newArr.push(arr[i])
}
}
document.write(newArr)
</script>