关于for......of的使用

前端JavaScript篇之如何使用for...of遍历对象 在JavaScript中,for...of循环是设计来遍历具有迭代器的数据结构的,比如数组、Map、Set等。对象(Object)本身并不是可迭代的,所以不能直接用for...of来遍历。但是,我们可以通过一些方法将对象的某些属性转换成可迭代的格式,然后使用for...of进行遍历。 阅读详情

for…of 一种用于遍历数据结构的方法。它可遍历的对象包括数组,对象,字符串,set和map结构等具有iterator 接口的数据结构。
(上面这句话如果有看不懂的地方,自动忽略即可,后续会有章节介绍。)
下面就以大家熟悉的数组为例来介绍for…of。
遍历数组早就不是什么新鲜事,我们有好几种方法去完成,此时ES6给我们带来一个新的遍历方for…of,难道它有更牛逼的地方?
接下来,我们先来看看几种传统的遍历数组的方式以及它们的缺陷。

                         **var arr = [1,2,3,4,5];
                    for(let i = 0;i<arr.length;i++){
                        //...
                    }**

方式一利用for循环来遍历数组的缺点就是:代码不够简洁。
下面介绍一个写法更加简洁的方式。

                   **var arr = [1,2,3,4,5];
                arr.forEach(function (value,index) {
                   //...
                });**

利用forEach循环代码量少了很多,写法更加简洁,缺点就是:无法中断停止整个循环。

                      **var arr = [1,2,3,4,5];
                      for(let i in arr){
                                //...
                    }**

for…in循环更常用于对象的循环,如果用于数组的循环,那么就要注意了,上述代码中每次循环中得到的i是字符串类型,而不是预料中的数字类型,要想对它进行运算,那得先要进行类型转换,造成不方便。

既然上面的几种方式都存在不足,新增的遍历方式for…of会比它们更好吗?答案是肯定的。

我们来看看for…of的是实现:

                 **var arr = [1,2,3,4,5];
                for(let value of arr){
                    console.log(value);
                }
                //打印结果:依次输出:1 2 3 4 5**

看样子是不是有点眼熟,很像for…in?确实很像。它的实现跟for…in很类似。

我们列举一下for…of的优势:

写法比for循环简洁很多;
可以用break来终止整个循环,或者continute来跳出当前循环,继续后面的循环;
结合keys( )获取到循环的索引,并且是数字类型,而不是字符串类型。

我们分别来展示一下上述的几个优点:

可以终止的循环:

    **var arr = [1,2,3,4,5];
for(let value of arr){
    if(value == 3){
        //终止整个循环
        break;
    }
    console.log(value);
}
//打印结果:1 2**

可以跳过的循环:

                **var arr = [1,2,3,4,5];
                for(let value of arr){
                    if(value == 3){
                        //跳过当前循环,继续后面的循环
                        continue;
                    }
                    console.log(value);
                }
                //打印结果:1 2 4  5**

得到数字类型的索引:

          var arr = [1,2,3,4,5];
        for(let index of arr.keys()){
            console.log(index);
        }
        //打印结果:依次输出:0 1 2 3 4

遍历字符串:

        let word = "我是前端君";
        for(let w of word){
            console.log(w);
        }
        //打印结果:我  是  前  端  君

遍历DOM List:

            <p>1</p>
            <p>2</p>
            <p>3</p>
            //假设有3个p元素
            let pList = document.getElementsByTagName('p');

            for(let p of pList){
                console.log(p);
            }
            // 打印结果:<p>1</p>
            //          <p>2</p>
            //          <p>3</p>

总结:for…of一种新的遍历方式,能遍历的对象有:数组,类数组对象,字符串,set和map结构等具有iterator接口的数据结构。而且for…in更适合用于对象的遍历。

态路小课堂丨三款800G光模块方案介绍—SR8/DR8/2FR4 800G QSFP-DD 2FR4光模块使用CWDM4波长(1271/1291/1311/1331nm),单通道速率为100G,通过MUX减小光纤的数目,其光学接口采用CS接口或双芯LC接口。 阅读详情

相关推荐

SWMM建模与案例应用

4、排水系统控制规则通过控制功能,可以在模拟进行过程中,通过条件判断,对闸门、水泵、管道、孔口、堰进行控制,实现排水系统实时控制。5、SWMM与其他模型对比分析分析:STORM、MOUSE、Info Works、SUSTAIN、SWC。1、模型初始设置主要参数:雨量计、汇水区、节点、出水口、管渠、分流器、蓄水池等参数前缀的设置。2、气象数据设置温度、蒸发、风速、融雪、面积亏损、气候调整、雨量计。1、多软件数据交互:CAD、Arcgis、SWMM。(1)节点、管段、水泵、孔口、堰、雨水口和街道。

m0_74575633的博客 3417

vue 里 for循环中有异步操作导致数据错乱的问题

经常会遇到for循环里有异步操作, 然后数据不对就会很头大 Func () { let tempArr = [] for (let i = 0; i < 10; i++) { if (i % 2 == 0) { tempArr.push(i + 10) } else { // setTimeout 模拟遇到的异步操作 setTimeout(() => { tempArr.push(i) }, 1)

良人非良 3075

Stable-Baselines3性能优化:多环境训练对比指南(DummyVecEnv vs SubprocVecEnv)

本文深入对比了Stable-Baselines3中DummyVecEnv与SubprocVecEnv两种向量化环境的性能差异与应用场景。DummyVecEnv适用于轻量级、步进快的环境,调试友好且开销低;而SubprocVecEnv则通过真正的多进程并行,能显著加速计算密集型环境的训练。文章通过基准测试与决策树,指导开发者根据环境计算成本、CPU核心数等关键因素做出最优选择,以实现训练效率最大化。

weixin_29063979的博客 146

22/09/27 vue3,在for循环中同步获取异步函数数据

vue,promise实现同步获取多个异步数据

Nighsloth的博客 1275

DS18B20温度传感器项目实战:从驱动编写到LCD显示,打造你的第一个温控系统

本文详细介绍了如何使用DS18B20温度传感器和LCD1602显示屏构建一个完整的温控系统。从硬件连接、OneWire协议实现到温度数据采集与LCD显示,全面解析了系统整合与工程化实现的关键步骤,帮助开发者快速掌握嵌入式温度监测系统的开发技巧。

weixin_42525328的博客 348

2019美亚杯团体赛刷题 部分题解(1-42、106-116)

文章目录写在前面使用工具刷题1.在黑客路由器里,有一台设备的MAC地址为00:11:6B:47:4D:55,请问它的IP地址是什么?2.在黑客路由器里,发现一设备的IP地址为192.168.0.103,请问该设备为如下哪一个:3.警方已经查证所有连接此router的设备都归黑客所有,根據黑客路由器的訊息,下列哪组(设备---ip)是错误的:4.Hacker现场检获的Windows主机硬盘已成功取证并制作成镜像Win1.E01,下列哪个是其硬盘证据文件的MD5哈希值。5.MD5hash算法会产生一个什么大小的

7ruth0hn的博客 7544

vue 如何在 for 循环里面使用异步调用 async/await

vue项目中如何在 for/forEach/map循环里面使用异步调用 async/await,在forEach直接调用会报错

TTong_190502的博客 2694

Delta-Sigma调制(DSM)技术

前言 数字信号处理和通信系统的性能很大程度上受到了模拟信号到数字信号转换接口——ADC的精度和分辨率的限制。而传统的线性脉冲编码调制(PCM)ADC受到了制造工艺的限制,无法达到很高的分辨率。但基于Delta-Sigma调制技术的ADC可以在现有工艺下实现高分辨率(大于16位),同时由于结构简单,所以易于实现。低成本高性能使得Delta-Sigma调制技术得到了广泛的应用。 Delta-Sigma型ADC的结构原理图如下图所示: 它最大的优势在于仅用1位ADC进行数据转换,同时其模拟电路部分结构简单不需要

阿星的博客 2万+

一、Vue3基础[常用的循环]

其中包含满足指定条件的所有元素。这个方法非常适合循环遍历数组并根据特定条件过滤元素的情况。例如,可以使用 filter 方法来找出,或者。

黑日里不灭的light 2273

保姆级教程:在Windows 10上为QT5.15.2配置Android开发环境(含SDK/NDK/JDK避坑指南)

本文提供了一份详细的Windows 10环境下为QT5.15.2配置Android开发环境的保姆级教程,涵盖SDK、NDK、JDK的安装与配置,以及常见问题的避坑指南。通过优化安装流程、解决Gradle下载慢等痛点,帮助开发者快速搭建稳定的编译环境,并提供了模拟器配置和调试技巧,确保开发效率。

weixin_30919571的博客 526

第1章第11节:创建可容纳多行滚动文字的输入框TextEditor [SwiftUI快速入门到实战]

TextField可以让用户输入单行的文字内容,若想输入多行的文字内容,可以使用能够容纳多行滚动文字的 TextEditor。 定义一个字符串属性,用来存储用户输入的文字内容。接着定义一个布尔属性,用来标识是否弹出警告窗口,以显示用户输入的内容。 TextEditor是由UIKit中的UITextView演变而来,因此可以在init方法中,通过UITextView修改TextEditor的外观属性。 添加一个VStack视图,作为子视图的容器。 创建一个TextEditor,Te..

互动教程网[www.hdjc8.com] 832

vue.js中for循环实现异步方法同步执行

前言:在项目中有些逻辑或者请求依赖另一个异步请求,常用的方法是回调函数、async await 。场景:For循环中异步接口查询返回数据 知识点:async 是“异步”的简写,async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成,并且await 只能出现在 async 函数中,否则会报错。async作用:当调用一个 async 函数时,会返回一个 Promise 对象。当这个 async 函数返回一个值时,Promise 的 resolve 方法会负责传递

lemon今天学习了吗?的博客 8445

PCL 计算点云包围球【2025最新版】

包围球通常用于简单排斥,因为与球体相交的方程很简单,同样重要的是,旋转一个球体并不会改变其范围。因此,当包围球用于简单排斥时,如果球体中心是对象的原点,则可以忽略对象的方向。

点云侠的博客 2068

js中for of的使用

for...of可以迭代数组、类数组以及任何可以迭代的对象(maps、sets、DOM集合) 1.遍历数组 let myArray = [{ code: 1 }, { code: 2 }]; for (let value of myArra...

xvzhengyang的博客 8567

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

js中关于const在for in或者for of中的使用

js中关于const在for in或者for of中的使用 const声明的变量在一个块级作用域中是不能够重新赋值。 那么在这个for循环当中使用会报错: for(const i = 0;i<3;i++){ console.log(i); } 在chrome浏览器中我们可以看到如下错误: 那么在for of或者for in当中使用就不会产生错误: let arr = [1,2,3,4,5]; for(const value of arr){ console.log(value); } 在ch

JAVA_DeDe的博客 7377

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

js的for、foreach、for in、for of之间的区别和使用

描述 在JS开发工作中,遍历数组的操作可谓十分常见了,那么像for循环,forEach此类方法自然也不会陌生,我们这里详细讲解一些他们之前的一些区别和作用 1,二者区别 1.for循环可以使用break,return,continue跳出循环,但forEach不能,只能通过try …catch 来终止。 (1)continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代. for (let i = 0; i < arr.length; i++) { if (i ==

qq_44552416的博客 4218

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

iterator 怎么使用甀_如何使用for of 循环遍历对象

for of循环 -- 冰山工作室https://www.zhihu.com/video/1117148817958469632使用 for-of 遍历对象是不是会轻松一点?如何遍历对象,一般来说都会想到 for-inlet obj = { a: 1 , b: 2 , c: 3 , d: 4 } ; for( let...

weixin_42203796的博客 108

for...of循环的使用

来源 | https://kai666666.com/2021/06/24/for-of循环的使用/for…of语句在可迭代对象(包括 Array,Map,Set,String,Typed...

web前端开发 854

for of、for in 、forEach使用方法对比

for of、for in 、forEach这三种方法在平常工作当中使用较多,但是有的时候可能能实现功能,但是可能并不是最佳实践,现在从遍历的对象类型、遍历顺序、遍历过程中是否可以修改对象、遍历过程中能否使用 break 和 continue、各自适用的场景这几个方面来对比介绍。

m0_45093055的博客 1746

Es6 中for of 使用

var arr = ['apple', 'banana', 'orange', 'pear'] //for in 数组,json 都可以遍历 for(var i in arr){ console.log(i) //i 代表的是数组的索引值 console.log(arr[i]) } //在Es6中 for of 只能遍历数组,但不能遍历json , 主要是配合 new M...

IT_Top 2321

JS: for循环、for-in与for-of的使用

一、for循环打印杨辉三角 <body> <style> span { color: white; } </style> <script> function hd(row) { for (let i = 1; i < row; i++) { for (let n = row - i; n > 0;

Y_ooo的博客 594

for in , forEach, for of 如何使用

for in , forEach, for of 如何使用 &amp;lt;script&amp;gt; let car = { name: '小红', age: 27, count: function () { age += 1 } } ...

JessLong的博客 272

ES6 for of 的使用

ES6 for of 的使用 一、for of多用于循环遍历数组,因为他能直接获取数组每位的值,而不是像for in一样先获取索引再获取值 let arr = ['a','b','c']; for(let item in arr){ console.log(item);//a b c } 二、for of 不能直接遍历对象,但通过手动实现迭代器接口是可以的 该例子来自ES6系列教程第二篇–Iterator 详解 var obj={ 0:"rrr", 1:"444", //实

wallace_yang的博客 369

forEach、for、for of 循环中使用 await

forEach、for、for of 循环中使用 await

qq_38778882的博客 959

使用for of 循环操作元素

使用for of 循环操作元素: 点击哪个li 哪个li 变成红色 <script> // 点击哪个li 哪个li 变成红色 let lis = document.querySelectorAll('li'); for (let val of lis) { val.addEventListener('c...

酱子 471

forEach 和 for of/ for 循环在使用await上的区别

代码: // 延迟 num 秒后 打印 num const say = async (num) => { console.log(num, 'begin:') await new Promise(resolve => { setTimeout(() => { console.log(num) resolve() }, num * 1000) }) } const nums = [2, 1] // 遍历 nums 打印 async f

皮蛋很白的博客 1622
上一篇: 关于input在iOS下会变成圆角的解决
下一篇: 关于localStorage的项目实用
new Object ~
博客等级 码龄9年 53粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值