1.Javascript最常见的遍历语法是for循环

  缺点:写法较为麻烦

for (let index = 0; index < array.length; index++) {
const element = array[index]; }

2. 数组给我们提供了forEach循环语句

    缺点:无法中途跳出forEach循环,break命令或return命令都不能奏效

    array.forEach(element => {
console.log(element);
});

3.for...in 循环可以遍历数组的键名

            for in 一般用于对象的遍历,会遍历对象本身的所有可枚举属性同时也会遍历对象从构造函数原型中继承来的属性,因此我们常常配合hasOwnProperty

  缺点:1>当for in 用于遍历数组的时候,数组的键名是数字,但是for...in循环是以字符串作为键名“0”、“1”、“2”等等

     2>for...in循环不仅遍历数字键名,还会遍历手动添加的其他键,甚至包括原型链上的键。

     3>某些情况下,for...in循环会以任意顺序遍历键名。

        Object.prototype.z = 100;

        let obj = {x: 1, y: 2};
     //继承构造函数原型中的属性
for ( let k in obj ) {
console.log( k ); //x y z
}
      //hasOwnProperty 继承的属性不显示
      for (const k in obj) {
 
        if (obj.hasOwnProperty(k)) {
          console.log(k); //x y
        }
      }

4.for...of 循环

  for...of循环提供了遍历所有数据结构的统一操作接口iterator,解决了上面的所有缺憾

  ES6中的有些数据结构原生具备Iterator接口(如数组),便可以直接使用for...of,有些不具备(如object),需要自己申明Symbol.iterator属性

  

  原生具备 Iterator 接口的数据结构如下。

  • Array
  • Map
  • Set
  • String
  • TypedArray
  • 函数的 arguments 对象
  • NodeList 对象

  

        let obj = { x: 1, y: 2 };

        obj[Symbol.iterator] = function () {
let keys = Object.keys(obj);
let length = keys.length;
let n = 0;
return {
next() {
return n < length ? { value: keys[n++] } : { done: true }
}
}
} for (const v of obj) {
console.log(v);
}

遍历语法for...in for...of iterator的更多相关文章

  1. JS中遍历语法的比较

    for循环 JavaScript 提供多种遍历语法.最原始的写法就是for循环.(假设myArray是数组,下面同理) let arr = [1,2,3,4,5]; for (var index = ...

  2. 如何边遍历集合边删除元素--使用Iterator中的remove()方法

    在遍历集合时,想将符合条件的某些元素删除,开始是用了下面的方法 public static void main(String[] args) throws UnsupportedEncodingExc ...

  3. js中4种遍历语法比较

    前言:本文主要比较for.for-in.forEach和for-of的异同以及优缺点. for for循环是最原始最易理解的循环遍历方式 for(var index = 0;index < ar ...

  4. ADF中遍历VO中的行数据(Iterator)

    在ADF中VO实质上就是一个迭代器, 1.在Application Module的实现类中,直接借助VO实现类和Row的实现类 TestVOImpl organizationUser = (TestV ...

  5. ES6学习笔记(十三)Iterator遍历器和for...of循环

    1.概念 遍历器(Iterator)就是这样一种机制.它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所有 ...

  6. Iterator(遍历器) 和 for...of 循环

    是generator的前置知识 generator :https://www.cnblogs.com/wangtong111/p/11322961.html 遍历器(Iterator)就是这样一种机制 ...

  7. 疑问:Iterator 遍历器和数据集合各种遍历方法的区别

    https://es6.ruanyifeng.com/#docs/iterator Iterator(遍历器)的概念 Iterator 接口主要供for...of消费 Iterator 的遍历过程是: ...

  8. Iterator对对象遍历

    //实例对象tables List<Table> tables = new TableManager(getApplicationContext()).queryTables();  sp ...

  9. es6 语法 (iterator和for...of循环)

    Iterator遍历器 遍历器(Iterator)就是这样一种机制.它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依次处理该数据 ...

随机推荐

  1. Effective C++ Notes

    Item 07 : 为多态基类声明virtual析构函数 #include <iostream> using namespace std; class Base { public: Bas ...

  2. 7、ORM

    CRUD(create.retrieve.update.delete) left join right join inner join one2one one2many many2many 1.For ...

  3. 《C++ Primer Plus》读书笔记之三—循环与关系表达式

    第五章 循环与关系表达式 1.表达式是值或者值与操作符的结合,每个C++表达式都有值.表达式到语句的转换只要加一个分号就可以完成.但是,反过来,从语句中删除分号,并不一定能将它转化成表达式. 2.前缀 ...

  4. 乘风破浪:LeetCode真题_011_Container With Most Water

    乘风破浪:LeetCode真题_011_Container With Most Water 一.前言 下面我们继续进行编程练习,可以说对于实际问题的活学活用是非常重要的.比如我们这次的题目,就需要从中 ...

  5. 解读ARM成功秘诀:薄利多销推广产品

    解读ARM成功秘诀:薄利多销推广产品 2013年07月04日 15:04   新浪科技 微博    我有话说(2人参与)   导语:美国电子杂志Slate周一发表署名 法哈德·曼约奥(Farhad M ...

  6. Python 及其基础语法

    重新开始玩 Python,打算就是学完实验楼的"Python3 简明教程",然后就可以玩点小项目,先前学了点 Python2 就不管它啦. 以上. 认识 Python Python ...

  7. Git本地服务器搭建

    安装编译环境,执行以下命令 [root@centos6 ~]# yum -y install curl curl-devel zlib-devel openssl-devel perl cpio ex ...

  8. Session not active, could not store state 的解决方法

    1.开口加上session_start() http://metah.ch/blog/2014/05/facebook-sdk-4-0-0-for-php-a-working-sample-to-ge ...

  9. 几个第三方yum源

    1.repoforge 官方网站:http://repoforge.org/ 2.epel http://fedoraproject.org/wiki/EPEL 3.Remi http://rpms. ...

  10. struts配置中的常量定义

    一.常量可以在struts.xml或struts.properties中配置,建议在struts.xml中配置,两种配置方式如下: (1)在struts.xml文件中配置常量 <struts&g ...