Javascript 迭代器是什么
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Javascript 迭代器是什么,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2401字,纯文字阅读大概需要4分钟。
内容图文
Javascript 迭代器是什么
JavaScript迭代器是在ES6中引入的,用于循环一系列值,通常是某种集合。根据定义,迭代器必须实现
next()
函数,该函数以{value,done}
的形式返回对象,其中value
是迭代序列中的下一个值,done
是一个布尔值,用于确定序列是否已被使用.
一个非常简单的例子如下:
// Javascript
class LinkedList {
constructor(data) {
this.data = data;
}
firstItem() {
return this.data.find(i => i.head);
}
findById(id) {
return this.data.find(i => i.id === id);
}
[Symbol.iterator]() {
let item = {next: this.firstItem().id};
return {
next: () => {
item = this.findById(item.next);
if(item) {
return {value: item.value, done: false};
}
return {value: undefined, done: true};
}
};
}
}
const myList = new LinkedList([
{id: 'a10', value: 'First', next: 'a13', head: true },
{id: 'a11', value: 'Last', next: null, head: false },
{id: 'a12', value: 'Third', next: 'a11', head: false },
{id: 'a13', value: 'Second', next: 'a12', head: false }
]);
for(let item of myList) {
console.log(item); // 'First', 'Second', 'Third', 'Last'
}
在上面的示例中,我们实现了一个LinkedList数据结构,它在内部使用一个数据数组,其中每个项都有一个值,以及一些用于确定其在序列中位置的实现特定属性。从这个类构造的对象在默认情况下是不可iterable的,因此我们通过使用符号.迭代器并对其进行设置,使返回的序列根据类的内部实现按顺序排列,而返回的项仅返回其值。
迭代器
另一方面,迭代器只是函数,这意味着可以像调用任何其他函数一样调用它们(例如,将迭代委托给现有迭代器),同时也不限于符号.迭代器名称,允许我们为同一对象定义多个迭代器。下面是这些概念的一个例子:
class SpecialList {
constructor(data) {
this.data = data;
}
[Symbol.iterator]() {
return this.data[Symbol.iterator]();
}
values() {
return this.data
.filter(i => i.complete)
.map(i => i.value)
[Symbol.iterator]();
}
}
const myList = new SpecialList([
{complete: true, value: 'first'},
{complete: true, value: 'second'},
{complete: false},
{complete: true, value: 'third'}
]);
for(let item of myList) {
console.log(item);
}
for(let item of myList.values()) {
console.log(item); // 'first', 'second', 'third'
}
在本例中,我们使用数据对象的本机数组迭代器使
specialist iterable
,返回数据数组的精确值。同时,我们还定义了一个values
方法,它本身就是一个迭代器,使用数组.prototype.filter()
和Array.prototype.map()
,然后最终返回符号.迭代器对于结果,只允许对序列中的非空对象进行迭代,并且只返回每个对象的值。
以上就能通过自定义方法,来获取想要的迭代器,比如,你要在可迭代对象组内,获取 对象内的某一个特定的key-value。记得使用[Symbol.iterator]
函数方法
内容总结
以上是互联网集市为您收集整理的Javascript 迭代器是什么全部内容,希望文章能够帮你解决Javascript 迭代器是什么所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。