Js循环
概念:完成某一功能的代码段在满足条件的情况下,不停的重复调用的过程被称之为循环。
一、for循环
- 适用场景
明确知道循环次数的循环结构 - 语法
for(循环变量初始化;循环条件判断;循环变量变化情况){
循环体;
}
练习
1. for循环遍历1-100内所有的偶数
for(var i=1;i<=100;i++){
if(i%2==0){
document.write(i+" ");
}
}
2. 使用for循环输出1-100内所有7的倍数和包含7的数字
for (var i = 0; i < 100; i++) {
// 个位数 对10取余 十位数 对10向下取整
if (i % 7 == 0 || i % 10 == 7 || Math.floor(i / 10) == 7) {
document.write(i + " ");
}
}
- 多位数位数上数字的获取:
- 个位数字获取:对10取余
- 最高位数字:将数字除10的n-1次方,然后向下取整
- 中间位数:将中间位数字通过位数的降低或提高变为最高位或最低为,然后按照最低为或最高位获取
3. 使用for循环输出100-999之间所有的水仙花数
for (var i = 100; i < 999; i++) {
var a = i % 10; //获取个位数字
var b = Math.floor(i / 10) % 10; //获取十位数字,将百位数变为十位数,中间位置的数字转换为个位数字
var c = Math.floor(i / 100); //获取百位数字
if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == i) {
document.write(i);
document.write("<br/>");
}
}
水仙花数:个位数字的立方+十位数字的立方+百位数字的立方=自身
Math.pow(a,b):a的b次方
4. 使用for循环生成10个随机范围为[10,20]的整数
for (var i = 0; i < 10; i++) {
var a = Math.floor(Math.random() * 11 + 10);
document.write(a);
document.write("<br/>");
}
- Math.radom()用来生成一个随即小数,取值范围为[0,1)
- Math.floor():向下取整
- Math.ceil():向上取整
- Math.round():四舍五入
二、循环嵌套
循环内部嵌套另一个循环的过程称为循环嵌套
1.九九乘法表
for (var i = 1; i <= 9; i++) {
for (var j = 1; j <= i; j++) {
document.write(j + "x" + i + "=" + i * j + " ");
}
document.write("<br/>");
}
三、while循环
- 适用场景:不知道循环次数但是明确知道循环结束的条件的情况
- 语法:
while(循环条件判断){
循环体;
} - while循环可以替代for循环,for循环无法替代while循环
练习
使用while循环求1-100的所有数字的和
var sum=0;
var i=1;
while(i<=100){
sum+=i;
i++;
}
document.write(sum);
四、break和continue
- break:用来终止所在的循环结构
- continue:用来结束本次循环,但是后面的循环不会受到影响
练习
1. 定义两个变量存储两个数字,求两个数字的最大公约数
逻辑思想:找出二者中较小值,从大到小依次遍历较小值,并分别用两个数除以该值,找到一个二者均能整除的值,即为两个数字的最大公约数
var a = 10;
var b = 20;
var min = a > b ? b : a;
for (var i = min; i >= 1; i--) {
if (a % i == 0 && b % i == 0) {
console.log(i);
break;
}
}
2. 输出1-100中所有不含7的数字
for (var i = 1; i < 100; i++) {
if (i % 10 == 7 || Math.floor(i / 10) == 7) {
// 跳过本次循环,直接到循环变量递增
continue;
}
console.log(i);
}