Iterator 接口

2023-05-16

具有原生的Iterator 接口的数据结构有 :

  1. Array ,
  2. Map ,
  3. Set ,
  4. String ,
  5. TypedArray ,
  6. arguments对象 ,
  7. NodeList对象

面我们来实现将class 和 object 也变成迭代的对象

实现的关键就是[Symbol.iterator]函数 和 next 函数

class添加iterator

class myIterator{
    constructor(data){
        this.data = data
    }
    [Symbol.iterator](){
        let index = 0
        let _this = this
        return {
            next:function(){
                return index<_this.data.length?
                {value:_this.data[index++],done:false}:{done:true}
            }
        }
    }
}

let my = new myIterator([1,2,3,4,5,6,7,8])

for(let i of my){
    console.log(i);
}

在这里插入代码片给对象添加 Iterator 接口

let obj = {
    data : ['hello','world'],
    [Symbol.iterator](){
        let index = 0;
        let _this = this;
        return {
            next(){
                return index<_this.data.length?
                {value:_this.data[index++],done:false}:{done:true}
            }
        }
    }
} 
for(let i of obj){
    console.log(i);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Iterator 接口 的相关文章

  • 通用 C++ 多维迭代器

    在我当前的项目中 我正在处理多维数据结构 底层文件按顺序存储 即一个巨大的数组 没有向量的向量 使用这些数据结构的算法需要知道各个维度的大小 我想知道是否已在某处以通用方式定义了多维迭代器类 以及是否有任何标准或首选方法来解决此问题 目前
  • 当指定acceptNode时,createNodeIterator在IE9中失败

    Target 我想循环遍历 DOM 文本节点 按它们在 DOM 中的顺序排序 此外 我想通过自定义逻辑过滤节点 例如检查节点是否位于特定元素内 此外 所有这些都应该在 IE9 中以尽可能最佳的性能完成 Method 满足上述所有要求之一 d
  • 如何在 Spark Java 中遍历/迭代数据集?

    我正在尝试遍历数据集来进行一些字符串相似度计算 例如 Jaro winkler 或余弦相似度 我将数据集转换为行列表 然后使用 for 语句进行遍历 这不是有效的 Spark 方法 所以我期待 Spark 中有更好的方法 public cl
  • STL 迭代器对结束(过去的结束)迭代器重新验证?

    请参阅有关尾后迭代器失效的相关问题 this https stackoverflow com questions 11350454 past the end iterator invalidation in c11 this https s
  • Boost Property_Tree迭代器,如何处理它们?

    抱歉 我之前问过关于同一主题的问题 但我的问题涉及那里描述的另一个方面 如何迭代提升 https stackoverflow com questions 4586768 how to iterate a boost property tre
  • 为什么 std::search 需要前向迭代

    我的问题与下面的线程相同 我正在努力理解给出的答案 或者更确切地说 我的代码不应该工作 因为它只使用输入迭代器 但我的 func 似乎工作并且行为与 std search 相同 所以我不知所措 不愿意在没有正确理解的情况下继续前进 也许如果
  • 迭代 std 容器中的所有元素对 (C++)

    迭代 std 容器中所有元素对的最佳方法是什么std list std set std vector etc 基本上与此等效 但使用迭代器 for int i 0 i lt A size 1 i for int j i 1 j lt A s
  • STL 中 next_permutation 的 Python 实现

    next permutation 是一个 C 函数 它给出字符串按字典顺序排列的下一个排列 有关其实现的详细信息可以从这篇非常棒的文章中获得 http wordaligned org articles next permutation ht
  • 计算结构向量中的匹配项

    我有一个问题 要求我计算该数组中使用以下任一方法的实例的数量std count or std find 我知道如何使用标准数据 参见底部代码 类型来执行此操作 但不知道如何使用NameContainer我正在使用的 Type struct
  • 为什么我不能将反向迭代器转换为正向迭代器?

    嗯 我知道为什么 是因为没有转化 但是为什么没有转化呢 为什么正向迭代器可以变成反向迭代器 但反之则不行 更重要的是 如果我想这样做 我该怎么办 是否有一些适配器允许您使用前向迭代器向后迭代 std vector
  • 使用推断的 (?) 类型克隆 std::iter::Map

    我在以紧凑的方式克隆地图时遇到问题 extern crate itertools num use itertools num linspace fn main 440Hz as wave frequency middle A let fre
  • 高效生成所有小于 N 的合数(及其因式分解)

    我想构建一个高效的 Python 迭代器 生成器 它会产生 所有小于 N 的合数 连同他们的质因数分解 我将其称为 composites with factors 假设我们已经有小于 N 的素数列表 或者可以执行相同操作的素数生成器 请注意
  • 迭代器后继者

    我想用另一个迭代器 同类 的后继者初始化一个迭代器 任意类型 以下代码适用于随机访问迭代器 但不适用于前向或双向迭代器 Iterator i j 1 一个简单的解决方法是 Iterator i j i 但这不起作用初始化语句for 循环的
  • 使用 std::istream_iterator 限制 std::copy 的范围

    我构建了一个最小的工作示例来展示我在使用 STL 迭代器时遇到的问题 我在用着istream iterator读书floatss 或其他类型 来自 astd istream include
  • 使用 STL 迭代器而不初始化它

    我想做这样的事情 container iterator it NULL switch eSomeEnum case Container1 it vecContainer1 begin break case Container2 it vec
  • 按值传递容器会使迭代器失效吗?

    这是一些示例代码 include
  • removeIf 实现细节

    我有一个我无法理解的小实施细节问题ArrayList removeIf 我认为我不能在没有先决条件的情况下简单地这么说 因此 实施基本上是bulk remove 不像ArrayList remove 一个例子应该会让事情更容易理解 假设我有
  • iteritems 的优点是什么?

    我使用的是 Python 2 7 5 Mac OS X 10 9 3 具有 8GB 内存和 1 7GHz Core i5 我测试了如下的时间消耗 d i i 2 for i in xrange 10 7 3 WARNING it takes
  • iOS 循环对象的属性并添加操作

    我有一个具有几个类似属性的类 UISliders 我想添加用户开始和结束使用每个滑块时的操作 每个滑块都将链接到同一个选择器 因此我考虑只是迭代它们 而不是编写 10 个几乎相同的代码块 问题是 最有效的方法是什么 我尝试过这样的事情 在运
  • 从迭代器外部将 StopIteration 发送到 for 循环

    有几种方法可以打破一些嵌套循环 他们是 1 使用中断 继续 for x in xrange 10 for y in xrange 10 print x y if x y gt 50 break else continue only exec

随机推荐

  • 正则表达式中?=和?:和?!的理解

    要理解 61 和 xff0c 首先需要理解前瞻 xff0c 后顾 xff0c 负前瞻 xff0c 负后顾四个概念 xff1a 前瞻 xff1a exp1 61 exp2 exp1后边是exp2就匹配 后顾 xff1a lt 61 exp2
  • JAVA中的向上转型和向下转型

    一 向上转型和向下转型 向上转型和向下转型是在JAVA继承操作中用到的东西 xff0c 在讲到转型之前我们需要认识到继承过程中的对象类型转换 xff0c 这种转换有两个特点 xff1a 1 这是继承过程中发生的操作 2 新类是现有类的一种类
  • k8s基于kubeadm部署集群 含集群NotReady解决方案

    1 xff09 简介 kubernetes简称k8s 是用于自动部署 xff0c 扩展和管理容器化应用程序的开源系统 中文官网 xff1a https kubernetes io Zh 中文社区 xff1a https www kubern
  • Ubuntu 下 触摸板不能使用 解决方法

    之前好不容易才安装好双系统 xff0c 今天在Ubuntun下安装东西时 xff0c 电脑没电 xff0c 自己关机了 xff0c 重启后 xff0c 触摸板就不能使用了 xff0c 参看了网上 http blog sina com cn
  • 如何安装touch 1.0.1

    如何安装touch 1 0 1 如何安装touch 1 0 1 如何安装touch 1 0 1 今天需要安装 touch 1 0 1 可能是老版本了吧 xff0c 直接使用pip install touch 61 61 1 0 1不能安装成
  • 立创开源|用立创EDA自制ST-Link V2.1调试器

    分享一个2年前在立创开源硬件平台上开源的项目 xff0c 该项目目前是平台上最热门的ST LINK V2 1项目 xff0c 也是点赞数最多的一个ST LINK相关的项目 xff0c 以下是该项目的累积数据 项目作者 xff1a 攻城狮晨哲
  • 一文带你快速理解FreeRTOS代码规范

    关注 星标嵌入式客栈 xff0c 精彩及时送达 导读 遇到些朋友感觉FreeRTOS内核代码看起来很不习惯 xff0c 不习惯其编码风格 xff0c 本文就来梳理一下其代码规范 xff0c 便于提高阅读其代码的效率 代码基于FreeRTOS
  • 校园网经常掉线解决

    我们要访问一个网站 xff0c 通常是在游览器里输入这个网站的网址 xff0c 然后回车 xff0c 这个时候 xff0c DNS 服务器会自动把它解析成 IP 地址 xff0c 实际上我们是通过 IP 来访问网站的 xff0c 网址只不过
  • RHEL7.4 vnc 黑屏问题

    https access redhat com solutions 3167971 环境 Red Hat Enterprise Linux 7 4tigervnc server 1 8 0 1 el7gnome shell 3 22 3 1
  • CentOS 7 禁止 root 直接登陆 及 修改默认端口

    一 禁止 Root 直接登陆 1 新建登陆用户 useradd tom 添加用户 passwd tom 设置密码 2 修改 sshd 配置文件 vi etc ssh sshd config 修改内容 PermitRootLogin no 改
  • 子网划分总结和技巧

    VLSM可变子网掩码对应CIDR值 下面是C类地址的划分技巧 1 确定划分子网数 子网数 61 2 n xff0c n代表子网掩码往右移动的位数 例如 xff1a 要划分2个子网 xff0c 子网掩码需要往右移动1位 xff0c 2 1 6
  • ubuntu虚拟机可以ping通主机但ssh连不上

    其它配置都正确后 xff0c 命令行执行此命令 xff1a service sshd start xff1b
  • android 安卓手机如何投屏到显示器

    这几天有个需求 xff0c 可以手机投屏到显示器上 xff0c 经过一番研究 xff0c 手机连接电脑再投屏是可以的 xff0c but xff0c 要想直接手机插一根线连接显示器 xff0c 只有支持USB3 0及以上的才可以 xff0c
  • sed之两个文件共有特征行的合并输出

    cat a txt 01 12510101 4001 02 12310001 4002 03 12550101 4003 04 12610001 4004 05 12810001 4005 06 12310001 4006 07 12710
  • Mac中有g++/clang,但引用报错:xcrun: error: invalid active developer path (/Library/Developer/Command...

    问题 xff1a 在Mac上安装fasttext的时候 xff0c 发现g 43 43 或者clang都不能直接引用 于是在终端用which检查了一下 xff0c 发现都是存在于 usr bin 目录中的 which g span clas
  • 利用XRDP远程登陆linux系统

    http linux chinaunix net bbs viewthread php tid 61 1149869 一般情况下我们用ssh客户端远程登陆inux系统 xff0c 至于图形界面下的linux 远程登陆工具 xff0c 我们一
  • BOND 动态链路聚合 lacp配置及相关问题

    内容基本都是参考的 xff0c 哪里有雷同或者错的地方 xff0c 请批评指正 针对802 3ad模式的业务分析 xff1a 场景 xff1a 两个千兆网口 xff0c 聚合成bond0 动态链路聚合抓取数据包格式分析 xff1a 后台bo
  • VNC使用介绍

    VNC在内部网络中经常被大家用到 xff0c 该工具同时具备远程操作和传输文件的双重功能 xff0c 而且速度也是很快的 xff0c xff08 低版本不具备文件传输功能 xff09 深受大众喜爱 xff0c 今天就简单写下在使用VNC的过
  • 清除chrome浏览器缓存

    之前有写过设置缓存 本文解决清除html缓存 如何才能清除缓存呢 xff1f 一下是几个清除浏览器缓存的方法 xff1a 方法1 chrome浏览器地址 xff1a chrome settings clearBrowserData xff1
  • Iterator 接口

    具有原生的Iterator 接口的数据结构有 Array Map Set String TypedArray arguments对象 NodeList对象 面我们来实现将class 和 object 也变成迭代的对象 实现的关键就是 Sym