es6(九) Iterator

在传统的数组遍历中,多层嵌套可能导致追踪变量困难和性能下降。ES6引入了`for..of`循环和迭代器来解决这个问题。可迭代对象通过Symbol.iterator属性提供一个函数,返回迭代器。数组、Set、Map等是可迭代对象,而Object则需通过Object.entries、Object.keys或Object.values获取迭代器。字符串也具备内置迭代器,如entries、keys和values方法用于不同类型的迭代。
摘要由CSDN通过智能技术生成

 

传统的数组遍历

var arr = [1, 2, 3];

for (var i = 0; i < arr.length; i++) {

    var val = arr[i];

}

问题:

如果产生多层嵌套, 就会造成追踪多个变量, 容易引发问题, 性能也会更低

更多的时候, 我们只想使用数组中的元素, 并不想使用索引

 

 

解决:

使用 for..of 遍历可迭代对象

 

var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];
					
for (var v1 of arr1) {
    for (var v2 of arr2) {
        console.log(v1, v2);
    }
}

 

使用迭代器

ES5代码模拟

function createIterator(items) {
    var i = 0;
    return {
        next: function() {
            var done = (i >= items.length);
            // items[i++] 每次使用后i+1
            var value = !done ? items[i++] : undefined;
            return {
                done: done,
                value: value
            };
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值