ES6遍历所有数据结构的统一的方法:for...of循环

1. Array:

const arr = [1, 2, 4, 6];
for (const item of arr) {
  console.log(item);
}

输出:

2.  Set:

const s = new Set([1, 3]);
console.log(s);
for (const item of s) {
  console.log(item);
}

输出:

 3. Map:

const m = new Map();
m.set('name', 'Jack');
m.set('age', 18);
// for (const item of m) {
//   console.log(item);
// }
for (const [key, value] of m) {
  console.log(key, value);
}

输出:

4.  Object:

对于普通的对象,for...of结构不能直接使用,会报错,必须部署了 Iterator 接口后才能使用。

 普通对象使用for...of:

const obj = {
  name: 'Jack',
  age: 18
};
for (const item of obj) {
  console.log(item);
}

报错:TypeError: obj is not iterable。

部署了 Iterator 接口的对象使用for...of:

const obj = {
  store: [1, 2, 3],
  [Symbol.iterator]: function () {
    let index = 0;
    const _self = this;
    return {
      next() {
        const result = {
          value: _self.store[index],
          done: index >= _self.store.length
        };
        index++;
        return result;
      }
    }
  }
}
for (const item of obj) {
  console.log(item);
}

输出:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值