JavaScript的循环遍历

一、数据类型的引用赋值操作:
1、简单数据类型/基本数据类型:

1 // 此时 str1 中存储的是数据
2 var str1 = '北京';
3 // 将 str1 中存储的数据北京赋值给str2 
4 var str2 = str1;
5 // 之后对str1 的操作,与str2,无关
6 var str1 = '上海'7 console.log(str1, str2)

2、引用数据类型/复杂数据类型:

1 // arr1 变量中存储的是数组的内存地址
2 var arr1 = [1,2,3,4,5,6];
3 //将arr1 存储的内存地址,赋值给arr2,两个变量存储的是相同的内存地址
4 var arr2 = arr1;
5 //当arr1操作,数组arr2也会变化
6 arr1[0] = '北京'; 
7 console.log(arr2);

二、深拷贝与浅拷贝:
1、浅拷贝定义:
①、直接赋值,赋值的是内存地址
②、赋值之后,两个变量使用的相同内容
③、一个操作,另一个也会改变。

2、深拷贝定义:
①、使用循环遍历,获取引用数据类型中,存储的每一个数据信息,赋值到新的变量中
②、赋值之后,两个变量,没有任何关系

三、循环遍历:
1、方法一:for循环

 1 var arr3 = ['北京','上海','广州','重庆','天津'];
 2     // 获取arr3中的所有数据数值,赋值到新的数组中
 3     var arr4 = [];
 4     //通过循环,生成arr3的所有索引下标
 5     for(var i = 0; i <= arr3.length-1;i++ ){
 6         //arr3[i]就是获取arr3中的存储数据信息
 7         //arr4.push()将arr3中的数据arr3[i],写入到arr4中
 8         arr4.push(arr3[i]);
 9     }
10     console.log(arr4);
11     //修改arr3中的数据,观察arr3与arr4之间的变化
12     arr3[0] = '武汉';
13     console.log(arr3,arr4);

2、方法二:forEach() 方法
语法规则:
   数组变量.forEach(function(形参1,形参2,形参3){
      程序内容;
    })
注:

形参1:存储的是当前循环次数时,获取的单元数据
参数2:存储的是当前循环次数时,获取的单元索引下标
参数3:存储的是原始数组
三个形参,不一定都要定义,可以根据实际需求,形参可以任意定义,只要符合命名规范就可以,forEach() 只能循环遍历数组,不能循环遍历对象

 1 var arr = ['北京','上海','广州','重庆','天津'];
 2     /*
 3         第一次循环,循环对象是 第一个单元 
 4             val : 存储数据 '北京'   key : 存储索引 0   arr : 存储原始数组
 5         第二次循环,循环对象是 第二个单元 
 6             val : 存储数据 '上海'   key : 存储索引 1   arr : 存储原始数组
 7         第三次循环,循环对象是 第三个单元 
 8             val : 存储数据 '广州'   key : 存储索引 2   arr : 存储原始数组
 9         第四次循环,循环对象是 第四个单元 
10             val : 存储数据 '重庆'   key : 存储索引 3   arr : 存储原始数组
11         第五次循环,循环对象是 第五个单元 
12             val : 存储数据 '天津'   key : 存储索引 4   arr : 存储原始数组
13     */
14     arr.forEach(function(val,key,arr){
15         console.log(val,key,arr);
16     })
17 
18 3、方法三:for...in方法
19 语法规则:
20     for(var 自定义变量 in 数组){
21     程序内容;
22     }

3、方法三:for...in方法
语法规则:
for(var 自定义变量 in 数组){
程序内容;
}
注:
自定义变量:存储数组单元索引
存储的索引的数据类型是字符串类型。如果要执行加法运算,需要转化为数值类型
for...in 是数组,对象都可以使用的循环。
for...in 循环只能获取索引,别的不能获取 

1 var arr = ['北京','上海','广州','重庆','天津'];
2 
3     for(var key in arr){  // 自定义变量,存储索引 0 1 2 3 4 ....
4         console.log(key,arr[key]);   // arr[key] 就是索引对应的数据
5     }

总结:
for循环 forEach()循环 for...in循环
针对数组而言,都可以完成我们的需求
只是针对不同的情况
推荐使用 forEach() ,最简单最方便
for循环的优点是,可以控制循环的起始和结束
for...in一般是针对对象的循环

猜你喜欢

转载自www.cnblogs.com/karl-kidd/p/12549731.html