我正在学习es6中的迭代,并且我了解它的作用。但是,我经常碰到“它返回可迭代”的字眼。如果某个对象看起来像这样的{}和数组这样的[]等,那么有人可以告诉我一个可迭代的样子。谢谢
答案 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
的对象(数组也是对象)。要简单地测试对象是否可迭代,可以尝试在其上使用传播运算符
示例
了解可迭代的工作原理
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