JavaScript 可迭代对象
可以迭代的对象 for..of
叫做可迭代.
从技术上讲,可迭代对象必须实现 Symbol.iterator
方法。
迭代字符串
您可以使用 for..of
循环迭代字符串的元素:
迭代数组
您可以使用 for..of
循环迭代数组的元素:
JavaScript 迭代器
这 迭代器协议 定义如何产生值序列 从一个对象。
对象变成 迭代器 当它实现一个next()
方法。
这 next()
方法必须返回具有两个属性的对象:
- 值(下一个值)
- 完成(真或假)
价值 | 迭代器返回的值 (如果 done 为真,则可以省略) |
---|---|
完毕 |
真的 如果迭代器已完成 错误的 如果迭代器产生了一个新值 |
自制可迭代
这个可迭代对象每次都会返回无穷无尽的结果:10,20,30,40,... next()
叫做:
例子
// 自制可迭代对象
函数 myNumbers() {
令 n = 0;
返回 {
下一步:函数(){
n += 10;
返回 {值:n,完成:false};
}
};
}
// 创建可迭代对象
const n = myNumbers();
n.next(); // 返回 10
n.next(); // 返回 20
n.next(); // 返回 30
亲自尝试 »
自制迭代器的问题:
它不支持 JavaScript for..of
陈述。
放置您的广告!
JavaScript 可迭代对象是一个具有 符号.迭代器.
这 Symbol.iterator
是一个返回next()
功能。
可以使用以下代码对可迭代对象进行迭代: for (const x of iterable) { }
例子
// 创建一个对象
我的数字 = {};
// 使其可迭代
myNumbers[Symbol.迭代器] = 函数() {
令 n = 0;
完成=假;
返回 {
下一个() {
n += 10;
如果 (n == 100) {完成 = 真}
返回 {value:n, done:done};
}
};
}
现在您可以使用 for..of
对于(myNumbers 的 const num){
// 此处任意代码
}
亲自尝试 »
Symbol.iterator 方法由以下方法自动调用: for..of
.
但我们也可以“手动”完成:
例子
让迭代器 = myNumbers[Symbol.iterator]();
while (真) {
const 结果 = 迭代器.next();
如果(结果.完成)中断;
// 此处任意代码
}
亲自尝试 »