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>`)
}
循环语句的跳出
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>