欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

for循环,for循环嵌套

程序员文章站 2022-07-13 14:52:21
...

for循环

for(var i = 0;i<10;i++)
for循环用于遍历对象,并将对象中的数拿出来

for循环的括号里用两个分号把它分成了三个部分,第一部分是循环变量,第二部分是循环的判断条件,第三部分是变量的变化规律(即每循环一次变量i的变化情况)。

for(var i = 0; i <10;i++){
console.log(i)
}

让我一步步的解析
首先 我var了一个 i 的变量并使它初始值等于0--------接着使 i <10, 最后i ++ 表示每次循环结束 i 自增 一

所以很好理解了,第一次循环时 ,i = 0, 判断 i <10没错,所以循环继续执行,(记住,这里每次i 必须要符合你第二个给的判断条件,只有它符合这个人条件这循环才能继续执行,不然就会停止循环),输出第一个数就为 0,接着i++ ,0自增1等于1吧,这个应该不用多说,所以1进入循环,判断1 < 10 没错,所以第二个数出来了为2,接下来又自增1,2自增一3 进入循环。。。。。。然后一直到 i = 9 的时候,输出9,在自增时为10,已经10 < 10 错误,所以循环结束
所以输出结果我们看下
for循环,for循环嵌套
这只是最简单的,接下来我们来个有点难度的
求1+2+3+4+。。。。+99的和
这个题我们应该怎么看呢,首先我们如果用数学的方法来做,肯定都会是吧,把每个数字拿出来然后相加,那么其实逻辑都一样
我们也是需要先把1-99之间的数字都先拿出来吧,那么用什么方法呢,for循环吧,遍历数组,拿出1-99之间的每个数,那么好,我们看

for(var b = 1;b<100;b++){

 }

是这样吧,没错,至于这里var b 为什么不等于0呢,我们初始值是从1开始加的吧,不是0,所以初始值等于1,好接下来我们这样输出一下看看是什么结果
for循环,for循环嵌套
我们可以看到他输出了1-99之间的数字吧,并不是我们想要的结果,那么怎么办呢。。。。。给他条件
找规律啊,1-99相加规律就是 (b*(b+1))/2 这个是吧
所以我们在输出结果之前加一个这个条件就行了或则consle 输出的时候不要输出b 输出这个公式也可以
for(var b = 1;b<100;b++){

    var a = (b*(b+1))/2
    console.log(a)
 }

//
for(var b = 1;b<100;b++){

  console.log((b*(b+1))/2)

}
上下2种都可以

for循环有很多种用法,它里面可以套if 语句,也可以在套for循环等等都可以,所以我们在看几个套 if 语句的列子

求100之间的奇偶数
首先我们需要知道什么是奇数与偶数,偶数-------可以被2整除的数--------%2=0 (除以2余数为0),奇数-----不能被2整除的数----%2=1(除以2余数为1),知道了他们的规律那么就非常好做了

首先还是一样取出1-100之间所以的数吧,然后给他一个判断条件,如果输出结果除以2余数为0的时候,就输出偶数,剩下的不是偶数就是奇数了,不算非奇非偶的话,如果非要算,在添加条件即可
for(var a = 1;a<=100;a++){
if(a%2==0){
document.write(a+‘偶数’)

    }
       else{
        document.write(a+'奇数')
  
        }

}  
// 最大公约数


   var m =parseInt(window.prompt('input'))
   var n =parseInt(window.prompt('input'))
   var a = 1;
   for(i=1;i<=m && i<=n && m<=n;i++){
       if(m%i==0 && n%i==0){
           a = i
       }   
   }
    document.write(a)

// 最小公倍数
var m =parseInt(window.prompt(‘input’))
var n =parseInt(window.prompt(‘input’))
for ( var i = 1; i <= m * n ; i++) {

if(i % m == 0 && i % n == 0) {

console.log(i);
break;
  }

}

for in

for 。。。 in 。。可以遍历对象或数组的显性属性,也就是说我们自己定义的属性是可以遍历的,那些原型上默认已有的属性,例如:Object.prototype.toString、Object.prototype.hasOwnProperty 是遍历不出来的。

表达式 for(变量名 表示数组中索引值 in 数组名)

比如
var arr = [‘aa’,12,true,{},[‘aa’],null];

要想取出数组中所有的数

for(i in arr){
console.log(arr[i]) //-------arr[i] 表示数组索引值所对应的数,比如 i = 1 ,arr[i] 对应数组中索引值为1的数-----就是12
}
当然这题也可以用for循环来做也是一样的

for(var i = 0;i<arr.length;i++){
console.log(arr[i])
// arr[0]----‘aa’
//arr[1]-----12
//arr[2]----true
//…
//最后一次
// arr[arr.length-1]// null
}

        var xiaoming = {
            name: "小明",
            age: 42,
            sex: "男"
        }
        for(var key in xiaoming){
            alert(key + ", " + xiaoming[key]);
        }

这里的 key 不像利用for循环遍历数组时的下标 1、 2、 3 了,这里它是对象的属性名,他也被称为下
下标,也可以用下标的方式,访问对象中的第几个属性。
我们都知道小标都用 [ ] 表示,所以这里访问第几个对象属性的属性值时,也可以用 对象[下标] 来访问。

【注】在对象中 . 是和 [ ] 的意思是一样的。例 xiaoming.name 等价于 xiaoming[name] , 但是for…in遍历下标中不能混淆, xiaoming[key] 可不等价与 xiaoming.key 。在 xiaoming[key] 中 key等于 每一次遍历的 name,age,sex等。 而xiaoming.key 就相当于访问xiaoming对象的key属性。很明显这里没有定义。

for in 中可以嵌套for循环 也可以嵌套for in

首先,for in 只能遍历出一层,像下面的题目我们需要的是输出(胡小威,20,true,赵小亮,22,false)这几个字符串,而for in 一次的话,它遍历只能遍历出2对象
var arr = [{“name”:“胡小威” , “age”:20 , “male”:true},{“name”:“赵小亮” , “age”:22 , “male”:false}]
for(x in arr){
console.log(arr[x])
}
看输出
for循环,for循环嵌套
所以我们需要在套一层for in

    for(x in arr){
     for(y in arr[x]){
         console.log(arr[x][y])
     }
 }

for循环,for循环嵌套
我们可以看到输出的结果就是我们需要的,这就是 for in 的2层嵌套,
/ for 。。。in 便利的数据
// 。。。。可以为任意的数据 赋值为对象中的属性
// 便利的对象,你只需要去除那个对象中所有的数据

// for x in obj obj表示便利的对象 x 表示属性
// x 有多个属性, 那么就执行多少次循环
数组下嵌套数组也叫多维数组
遍历方式: for的嵌套,最好不要超过5层,如果超过5层,如果超过5层,那就会崩溃

for(x in obj)
var arr = [
        ['name',1,2,3,4,5,6,2,3,3,333],
        ['form','aa','dcc',22],
        ['dd',1,2,3,44,55]
    ] 
    // 遍历第一遍数组
    /*
    arr[0]---->['name',1,2,3,4,5,6,2,3,3,333]---在辨别能力
       在第一层基础上在遍历数组
             ----->'name',1,2,3,4,5,6,2,3,3,333
    arr[1]---->['form','aa','dcc',22]
    在第一层基础上在遍历数组
             ----->'form','aa','dcc',22
    arr[2]---->['dd',1,2,3,44,55]
     在第一层基础上在遍历数组
             ----->'dd',1,2,3,44,55


    */

最后附上一张笔记的理解,当然是我盗图的哈哈,我觉得写的挺明白的for循环,for循环嵌套