javascript 中可迭代对象的格式是什么
What is the format of an iterable in javascript
我正在学习 es6 中的迭代,我了解它的作用。但是,我经常遇到 "it returns an iterable" 这个词。如果一个对象看起来像这样 { } 和一个像这样的数组 [ ] 等等,有人可以告诉我可迭代对象是什么样的吗?谢谢
Iterable 表示具有函数Symbol.iterator
的对象(数组也是对象)。为了简单地测试一个对象是否可迭代,你可以尝试在它上面使用扩展运算符
例子
了解可迭代的工作原理
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator
Iterable是接口,不是数据结构。你可以阅读更多here
可迭代本身不是数据结构(如数组或对象)。相反,它是一个对象的 属性 函数,它定义了 如何 对象是可迭代的。
The iterable protocol allows JavaScript objects to define or customize their iteration behavior, such as what values are looped over in a for..of construct. Some built-in types are built-in iterables with a default iteration behavior, such as Array or Map, while other types (such as Object) are not.
当他们说 "it will return iterable" 时,这意味着您可以在 for...of 循环中使用它来迭代该对象。正如我们所知,Plain JS Object 是不可迭代的。以下是可迭代值:
1.Arrays
2.Strings
3.Maps
4.Sets
可迭代对象是一种数据结构,它希望 public 可以访问其元素。它通过实现一个键为 Symbol.iterator 的方法来实现。该方法是迭代器的工厂。
基本上 iterable 是一个值,甚至是实现 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);
我正在学习 es6 中的迭代,我了解它的作用。但是,我经常遇到 "it returns an iterable" 这个词。如果一个对象看起来像这样 { } 和一个像这样的数组 [ ] 等等,有人可以告诉我可迭代对象是什么样的吗?谢谢
Iterable 表示具有函数Symbol.iterator
的对象(数组也是对象)。为了简单地测试一个对象是否可迭代,你可以尝试在它上面使用扩展运算符
例子
Iterable是接口,不是数据结构。你可以阅读更多here
可迭代本身不是数据结构(如数组或对象)。相反,它是一个对象的 属性 函数,它定义了 如何 对象是可迭代的。
The iterable protocol allows JavaScript objects to define or customize their iteration behavior, such as what values are looped over in a for..of construct. Some built-in types are built-in iterables with a default iteration behavior, such as Array or Map, while other types (such as Object) are not.
当他们说 "it will return iterable" 时,这意味着您可以在 for...of 循环中使用它来迭代该对象。正如我们所知,Plain JS Object 是不可迭代的。以下是可迭代值: 1.Arrays 2.Strings 3.Maps 4.Sets 可迭代对象是一种数据结构,它希望 public 可以访问其元素。它通过实现一个键为 Symbol.iterator 的方法来实现。该方法是迭代器的工厂。
基本上 iterable 是一个值,甚至是实现 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);