zoukankan      html  css  js  c++  java
  • 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一般是针对对象的循环

    A True Master Is An Eternal Student(真正的大师总是怀着一颗学徒的心) ------(Master Yi)
  • 相关阅读:
    位运算的简单简要
    Date()函数详细参数
    Android画图之Matrix(二)
    图像渐变特效的简单介绍
    Android MotionEvent中getX()和getRawX()的区别
    Timer计时器
    android中raw文件夹和asset文件夹的共同点和区别
    Selector、shape详解
    select语句后以for update结尾
    Openfire(原来的Wildfire) 在 Web 2.0 中的作用
  • 原文地址:https://www.cnblogs.com/karl-kidd/p/12549731.html
Copyright © 2011-2022 走看看