JavaScript中可迭代的格式是什么

时间:2019-01-24 10:41:17

标签: javascript ecmascript-6 iterable

我正在学习es6中的迭代,并且我了解它的作用。但是,我经常碰到“它返回可迭代”的字眼。如果某个对象看起来像这样的{}和数组这样的[]等,那么有人可以告诉我一个可迭代的样子。谢谢

5 个答案:

答案 0 :(得分:2)

通常,可迭代是一个值,甚至是实现了Symbol.iterator的原始值。

例如,一个数组默认具有此属性,例如

var array = ['a', 'b', 'c'];

console.log(...array);

但是,例如,如果将迭代器添加到Number的原型中,甚至可以散布数字。

Number.prototype[Symbol.iterator] = function* () {
    for (var i = 0; i < this; i++) {
        yield i;
    }
};

console.log(...10);

答案 1 :(得分:0)

Iterable表示具有功能Symbol.iterator的对象(数组也是对象)。要简单地测试对象是否可迭代,可以尝试在其上使用传播运算符

示例 iterable example 了解可迭代的工作原理 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator

答案 2 :(得分:0)

可迭代本身不是数据结构(如数组或对象)。相反,它是定义如何该对象可迭代的对象的属性函数。

有关详情,请参见Iteration Protocols

  

可迭代协议允许JavaScript对象定义或自定义其迭代行为,例如for..of构造中循环的值。有些内置类型是具有默认迭代行为的内置迭代器,例如Array或Map,而其他类型(例如Object)则不是。

答案 3 :(得分:0)

当他们说“它将返回可迭代”时,这意味着您可以在for ... of循环中使用它来迭代该Object。众所周知,普通JS对象是不可迭代的。以下是可迭代值: 1.数组 2.弦乐 3.地图 4.套 可迭代的是一种数据结构,希望其元素可供公众使用。为此,它实现了一个键为Symbol.iterator的方法。该方法是迭代器的工厂。

答案 4 :(得分:-1)

可迭代的是接口,而不是数据结构。您可以阅读更多here