关于Iterator(遍历器)的干货

提到遍历,就一定要知道symbol.Iterator,任何数据结构只要部署 Iterator 接口,就可以完成遍历操作。

  • for是JavaScript中为我们提供的一个最原始的方法
/** 这种写法用起来没问题,就是不简洁。 **/
for (var index = 0; index < Array.length; index++) {
  console.log(Array[index]);
}
  • forEach数组提供的内置方法

这个看起来很简洁,缺点在于中途不能跳出循环,无法执行break,continue,return命令。

  • for...in循环读取键名(更适合遍历对象)
/** 1、数组的键名是数字,而for...in则是以字符串“0”,“1”,“2”作为键名,所以不适合数组。 **/
let es6 = {
  edition: 6,
  committee: "TC39",
  standard: "ECMA-262"
};

for (var index in es6) {
  console.log(es6[index]);
}


/***  for..in循环不仅遍历数字键名,还会遍历手动添加其他键,甚至包括原型链上的键。 */
let arr = [3, 5, 7];
arr.foo = 'hello';

for (let i in arr) {
  console.log(i); // "0", "1", "2", "foo"
}
  • for...of循环读取键值(es6新提供的遍历命令,更适合数组)
/** ​​​​​​​不但和foreach一样有着简洁的语法,而且可以配合return,break,continue命令。 */
for (var n of fibonacci) {
  if (n > 1000)
    break;
  console.log(n);
}

/** 并不是所有类似数组的对象都具有 Iterator 接口,一个简便的解决方法,就是使用Array.from方法将其转为数组。 */
let arrayLike = { length: 2, 0: 'a', 1: 'b' };

// 报错
for (let x of arrayLike) {
  console.log(x);
}

// 正确
for (let x of Array.from(arrayLike)) {
  console.log(x);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值