相关疑难解决方法(0)

迭代器和可迭代的区别

Iterator 和 Iterable 有什么区别?一种子类型是否属于另一种子类型?一些实际应用中的实际差异是什么?

我正在尝试阅读一些教程和规范,但它们都非常复杂。

(我正在使用 ES6 和 Babel,如果有帮助的话。)

javascript ecmascript-6

6
推荐指数
1
解决办法
1482
查看次数

Javascript可迭代的技术定义是什么?如何测试它?

我一直在实现ES6 Set对象的有用子类.对于我的许多新方法,我想接受一个可以是另一个Set或一个数组的参数,或者我可以迭代的任何东西.我一直在调用我的界面中的"可迭代"并只使用.forEach()它(它适用于Set或Array.示例代码:

// remove items in this set that are in the otherIterable
// returns a count of number of items removed
remove(otherIterable) {
    let cnt = 0;
    otherIterable.forEach(item => {
        if (this.delete(item)) {
            ++cnt;
        }
    });
    return cnt;
}
Run Code Online (Sandbox Code Playgroud)

要么

// add all items from some other iterable to this set
addTo(iterable) {
    iterable.forEach(item => {
        this.add(item);
    });
}
Run Code Online (Sandbox Code Playgroud)

但是,我怀疑我可能并没有像ES6定义的那样支持任何迭代,所以我对Javascript可迭代的真正定义是什么感兴趣,因为ES6规范使用了这个术语?

你如何在ES6 Javascript中测试它?

你应该如何迭代一般的迭代?

我在ES6规范中找到了这样的短语:

如果存在参数iterable,则期望它是一个实现@@ iterator方法的对象,该方法返回一个迭代器对象,该对象生成一个类似于二元素的对象,其第一个元素是一个将用作WeakMap键的值,其第二个元素是与该键关联的值.

但是,这指的@@iterator method是我似乎无法通过该属性名称访问的内容.

javascript iterator iterable ecmascript-6

4
推荐指数
1
解决办法
282
查看次数

标签 统计

ecmascript-6 ×2

javascript ×2

iterable ×1

iterator ×1