zoukankan      html  css  js  c++  java
  • for each...in/for...in/for...of/

    for each ...in / for ...in / for...of

     

    参考博客:

    https://www.cnblogs.com/ruoqiang/p/6217929.html

    https://www.cnblogs.com/dupd/p/5895474.html

    1 for ...in 遍历对象

    以任意顺序遍历一个对象的可枚举属性。对于每个不同的属性,语句都会被执行。

    语法:

    for (variable in object) {...}

    参数:

    variable
      在每次迭代时,将不同的属性名分配给变量
    object
      被迭代其枚举属性的对象。
    复制代码
    var obj = {a:1, b:2, c:3};
        
    for (var prop in obj) {
      console.log("obj." + prop + " = " + obj[prop]);
    }
    
    // Output:
    // "obj.a = 1"
    // "obj.b = 2"
    // "obj.c = 3"
    复制代码

    for..in 不应该被用来迭代一个下标顺序很重要的 Array .

    数组索引仅是可枚举的整数名,其他方面和别的普通对象属性没有什么区别。for...in 并不能够保证返回的是按一定顺序的索引,但是它会返回所有可枚举属性,包括非整数名称的和继承的。

    因为迭代的顺序是依赖于执行环境的,所以数组遍历不一定按次序访问元素。 因此当迭代那些访问次序重要的 arrays 时用整数索引去进行 for 循环 (或者使用 Array.prototype.forEach() 或 for...of 循环) 。

     2 for each ...in 遍历对象

    使用一个变量迭代一个对象的所有属性值,对于每一个属性值,有一个指定的语句块被执行.

    for each...in 是 ECMA-357 (E4X) 标准的一部分, 大部分非Mozilla浏览器都没有实现该标准, E4X并不是 ECMAScript 标准的一部分.

    作为ECMA-357(E4X)标准的一部分,for each...in语句已被废弃,E4X中的大部分特性已被删除,但考虑到向后兼容,for each...in只会被禁用而不会被删除,可以使用ES6中新的for...of语句来代替.

    语法:

    for each (variable in object) 
    {
      statement
    }

    参数:

    variable
    用来遍历属性值的变量,前面的var关键字是可选的.该变量是函数的局部变量而不是语句块的局部变量.
    object
    该对象的属性值会被遍历.
    statement
    遍历属性值时执行的语句. 如果想要执行多条语句, 请用({ ... }) 将多条语句括住.

    一些对象的内置属性是无法被遍历到的,包括所有的内置方法,例如String对象的indexOf方法.不过,大部分的用户自定义属性都是可遍历的.

    警告:永远不要使用for each...in语句遍历数组,仅用来遍历常规对象。

    复制代码
    var sum = 0;
    var obj = {prop1: 5, prop2: 13, prop3: 8};
    
    for each (var item in obj) {
      sum += item;
    }
    
    print(sum); // 输出"26",也就是5+13+8的值
    复制代码

    3 for of遍历对象

    循环遍历对象的值,是遍历键值对后面的那一个value哦 ,与for in遍历key相反

    复制代码
    var myArry =[1,2,3,4];
    myArry.desc ='four';
    for(var value of myArry){
      console.log(value)
    }
    //1
    //2
    //3
    //4
    复制代码
    • 这是最简洁、最直接的遍历数组元素的语法
    • 这个方法避开了for-in循环的所有缺陷
    • 与forEach()不同的是,它可以正确响应break、continue和return语句
  • 相关阅读:
    在消息框中添加帮助按钮
    如何隐藏一个窗口在任务栏
    不透明的形式在c#中
    实现观察者模式在一个非常简单的例子
    更新使用回调模态对话框的内容
    检查Windows应用程序的现有实例,并设置MDI子程序的MDI父窗体
    更改对话框内容的简单方法
    MSIUninstaller.exe(控制台应用程序)
    启用或禁用控制更有效的和有效的方式
    一个c++ OCX,用于在应用程序的任何窗口上绘图
  • 原文地址:https://www.cnblogs.com/dabfranklin/p/9943540.html
Copyright © 2011-2022 走看看