首页
学习
活动
专区
圈层
工具
发布

JS常用的循环遍历你会几种?

这是第 100 篇不掺水的原创,想要了解更多,请戳上方蓝色字体:政采云前端团队 关注我们吧~ 本文首发于政采云前端团队博客:JS常用的循环遍历你会几种 https://www.zoo.team/article.../cycle-in-js 前言 数组和对象作为一个最基础数据结构,在各种编程语言中都充当着至关重要的角色,你很难想象没有数组和对象的编程语言会是什么模样。...特别是 JS,弱类型语言,非常灵活。本文带你了解常用数组遍历、对象遍历的使用,对比以及注意事项。 数组遍历 随着 JS 的不断发展,截至 ES7 规范已经有十多种遍历方法。...回调函数接收四个参数: accumulator:MDN 上解释为累计器,但我觉得不恰当,按我的理解它应该是截至当前元素,之前所有的数组元素被回调函数处理累计的结果。...我采用每个循环执行 10 次,去除最大、最小值 取平均数,降低误差。

3.2K20

为什么HashMap会产生死循环?

1、数据插入原理 在分析原因之前,我先带大家了解一下JDK1.7中HashMap插入数据的原理,来看动画演示: 由于JDK 1.7中HashMap的底层存储结构采用的是数组 加 链表的方式。...而HashMap在数据插入时又采用的是头插法,也就是说新插入的数据会从链表的头节点进行插入。 因此,HashMap正常情况下的扩容就是是这样一个过程。...我们来看,旧HashMap的节点会依次转移到新的HashMap中,旧HashMap转移链表元素的顺序是A、B、C,而新HashMap使用的是头插法插入,所以,扩容完成后最终在新HashMap中链表元素的顺序是...2、导致死循环的原因 接下来,我通过动画演示的方式,带大家彻底理解造成HashMap死循环的原因。...2)、使用线程安全的容器Hashtable替代,但它性能较低,不建议使用。 3)、使用synchronized或Lock加锁之后,再进行操作,相当于多线程排队执行,也会影响性能,不建议使用。

2.8K11
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    一文带你彻底理解程序为什么会超时

    关于代码的一切尽在「代码随想录」 一些同学对计算机运行的速度没有概念 可能就是感觉计算机运行速度应该会很快 但我们在做算法题目的时候为什么会超时呢? 我们的计算机究竟1s可以计算多少次呢?...超时是怎么回事 大家刷leetcode时候应该都遇到过知一种错误是超时 也就是说程序运行的时间超过了规定的时间,而leetcode并没说程序运行了多久超时,也没有说超时时间具体是多少 一般现在判题系统的超时时间就是...下文为了方便讲解,暂定超时时间就是1s 接下来我们要知道我们的代码为什么会超时的 也就是如果我们写出了一个O(n)的算法 ,我们其实可以估算出来n是多大的时候,我们算法的执行之间就会超过1s 如果知道n...等于多少赫兹呢 1GHz(吉赫)= 1000MHz(兆赫) 1MHz(兆赫)= 1百万赫兹 所以 1GHz = 10亿Hz,表示CPU可以一秒运行10亿次,2.7GHz就是27亿次 再加上双核所以就是理论上我的计算机.../algorithm_interview_course/blob/master/chapter_two/section_2.cpp 总结 这是在我自己的计算机上测出来的数据,不能说是十分精确,数量级是差不多的

    1.6K20

    为何我的循环 (for loop) 会执行两次?

    如果你的 for loop 循环执行了两次,而你预期它只执行一次,可能有以下几种常见原因。我们可以检查这些可能的原因,来找出问题的根源。...问题背景在一个应用中,你有一个 for 循环,它根据表单答案创建一个字典。看起来它被执行了两次,因此第一个字典(它是正确的,你可以看到它)被第二个字典擦除了。你不明白为什么它会被执行两次!...有一种感觉,问题可能来自相关的模板(但你可能错了)。解决方案问题的原因是模板中有一个隐藏的 CSRF 令牌字段作为表单的一部分。...调试与打印:添加调试打印信息(如打印迭代次数或标记函数的调用),帮助你确定循环执行的次数和调用顺序。检查事件处理逻辑:如果使用了事件驱动模型,确保事件没有多次触发或处理函数没有被多次绑定。...如果你能提供一些具体代码,我可以帮你更准确地诊断问题。

    75910

    我为什么会坚持技术创作

    所以,我要离目标近一点,需要怎么做呢?我的答案是:继续坚持技术创作。于是又出现两个问题,一个是要怎么坚持,一个是为什么要坚持。我这次的主题,选择的是第二个问题,为什么要坚持技术创作。...因为我觉得,这个是根本性的动力,有了足够的理由,第一个问题要怎么坚持自然就会有办法。自我介绍我的网络ID是一凡sir,个人网站是壹梵在线,之前在360和腾讯都工作超过4年时间。...我的网站名称是壹梵在线,也不是一凡两个字,原因一样,也是已经被人注册了。所以呢,我建议大家想要开始技术创作的话,一定要趁早,至少还可以占一个理想的名字。ChatGPT给出的答案1....但是这个小程序每天也就100多人使用,这么高的费用就完全没有性价比了。于是希望我能帮忙给到一个更有性价比的技术方案。我的这些小例子,大家应该也会遇到,机会处处都在。...我把这次分享的5000字给它,几秒钟就可以得到这么精炼的总结,效率高吧。本次的分享结束,交个朋友,请关注 一凡sir 吧。

    779141

    我为什么建议大家一定的会 C 语言

    在如今 Python 和 Java 大火的市场前景下,我还是建议,如果你还在学校读书,或者你有大把的空闲时间,不着急去找工作,那就静下心来,好好学习一下 C 语言,会让你受益终生,也会让你的编程之路走的更远...其设计的精髓,其内涵思想,都是值得当下的我们学习与借鉴的 2、C 语言作为我接触编程的开始,对我的影响很大,带我入了 IT 这行,我本人也是极其的喜欢 C 语言,C 语言涉及了很多底层的知识,比如:内存...C 语言入门比较难,我也是非科班出身,一路全凭自己摸索,自己的智商并不高,我能做的到,代表大部分人应该都可以,换一种角度思考,如果难的都搞定了,简单的还是问题吗 与 C 结缘 我说说我自己本人的亲身经历...,由一名后台转算法,仅仅用了 3 个月的时间,但是为什么我能这么快的成功转型呢 扎实的基础功底、快速的学习能力、解决问题的能力、以及个人潜力 扎实的基础功底很重要,基础是什么:数据结构 + 算法,操作系统...,这些都是相通的,公司需要我做什么,我快速学习就好 语言是工具,重要的是思想,我很认同这句话,我以前没接触过 go,在百度实习的时候,我导师还给了我 1 周的时间去熟悉,才上项目,以前没咋用 Python

    2.2K50

    为什么我做分享的时候会感觉大脑空白

    这也是我最近遇到的问题,这两个月做了两次技术分享,第一次就遇到上面的情况,有的点因为紧张怎么都想不起来,只能尴尬的说,我回头再重新捋一下发给大家。 为了避免每次遇到这种问题,我得想办法解决。...再从大脑结构来说,你可以理解它们分布在这个位置: 从距离上说,本能脑和情绪脑距离心脏更近,一旦出现紧急情况,它们就会优先得到供血,这就是为什么我紧张的时候会感觉大脑空白,因为最上方的理智脑供血不足了。...而且因为它年龄小,在遇到危险的时候,本身也竞争不过其他两重脑,所以就能解释,为什么人在遇到危险的时候都靠本能反应而不是靠理智。 02 那怎么解决这个问题呢? 其实很简单,就是打稿子,然后自己多练。...前几天和阿常聊天,她说起将要和小林连麦,想想都觉得会紧张,后来把默默把内容在脑子里过了几遍之后感觉踏实不少。...昨天我看了阿常和小林的连麦,非常稳,这也是我要继续学习的方向。 好了今天的分享就到这里。 今日鸡汤: 自信人生二百年,会当击水三千里。

    1.5K40

    为什么if-else会影响我的代码的复杂度

    关于if-else的争议 我之前写了一篇文章《我用规则引擎消除if语句,提高了代码的可扩展性》,这篇文章我想阐述的观点是复杂的if语句可能会影响代码的阅读和代码的扩展性,会将非业务的条件逻辑与业务逻辑混合在一起...时间长了代码会越来越臃肿,因此这种情况下我推荐使用一些设计模式例如策略模式,责任链模式等去优化if语句带来的问题,文中我发现使用规则引擎也能实现类似效果,因此介绍了怎么使用规则引擎Easy Rules去取代...if-else增加了代码复杂度 文章发布后,有很大一部分读者认为只用设计模式会增加代码阅读性,还是会觉得if-else好,就算if写得再复杂,也要使用if-else。...当然也有赞同我的观点的: 统计了下,有八成读者评论是反对用其他方法代替if-else的。所以我还是想写篇文章表达下我的观点。...这里我要阐明我的一个观点: “我的观点并不是说,我们在编码时不能使用if-else,而是说我们不应该简陋地用if-else去实现业务的分支流程,因为这样随意的代码堆砌很容易堆出一座座"屎山"。

    3.1K10

    Next.js,到底为什么这样对我?

    但是在使用过的所有框架中,Next.js 一直是非常让我头疼的。而且这几个月的情况一点都没好转。...如果你用过 Express 或类 Express 的库,它就像 app.get("/", handler)。所以你会以为请求或请求上下文会作为参数传递给这个函数...是吧?根本不是!...为什么呢?我想不出任何合理的解释来证明这个限制是必要的。SvelteKit 可以很好地实现这一功能。每个 HTTP 框架都可以做得很好。...为什么它总是运行在 Edge 上呢?为什么要限制它不允许运行数据库查询或使用 Node.js 模块呢?...为什么要这样设计? 所有这些小问题积累起来,作为一个库的作者,支持 Next.js 很困难,有时候几乎是不可能的。

    1.3K20

    JS中的那些循环

    一、forEach定义一个函数, 数组的普通循环遍历, 并为每个数组元素执行一次传入的callback/** * @param {*} element 当前处理元素 * @param {number}..., forEach会直接跳过, 但是不会改变遍历元素的索引值[1, , , 4].forEach((v, i, array) => { console.log(`index ${i}: v-${v},...遍历过程中, 后面的迭代会按照最新的数组值进行遍历, 已遍历过的索引, 不会再重新遍历一遍 a) 新增元素const iterable = [1, 2];for (const v of iterable...js中除了上述三种循环之外, 还有一下循环方式 1、 for语句 2、 do...while语句 3、 while语句 4、 map函数 5、 some函数 6、 every函数以上不做详细介绍.....of: 471.445ms, 通过访问对象的迭代器进行循环6、map: 549.118ms, 会对数组进行浅拷贝, 并返回新数组, 耗时较长7、for...in: 2.222s, 耗时最长, 因为会访问到对象的原型上

    2.9K10

    JS高级测试: 以下javascript中for循环下面的操作会输出什么?

    考核内容:ES6 遍历器接口 for 循环遍历 题发散度: ★★★ 试题难度: ★★★ 解题思路: 什么是 for…of 循环 for...of 语句创建一个循环来迭代可迭代的对象。...在 ES6 中引入的 for...of 循环,以替代 for...in 和 forEach() ,并支持新的迭代协议。...for...of 允许你遍历 Arrays(数组), Strings(字符串), Maps(映射), Sets(集合)等可迭代的数据结构等。...iterable:一个具有可枚举属性并且可以迭代的对象。...所以上面的 i 不是下标而是 每一个数组的节点值 输出的实际上是: arr["3"] arr[4] arr["shuke"] arr["es6"] 只有第一个能找到数组中的位置,其它的都找不到 参考代码

    1.6K40

    我 JS 写的好好的,为什么要用那么复杂的TS

    前言 我JS写的好好的,为啥要用TS写呢? 本文写给那些完全没有用过TS,也没有使用过结构化语言,对TS有一定的心智负担的前端新手同学。...面对铺天盖地的TS怎么好怎么好的文章,项目中还没真正开始使用到TS的小伙伴,可能只是看了很多的掘金文章,或者看了一遍官方文档,脑子里基本上都是:嗯,是的,我知道TS好,我知道在变量后面加一个冒号一个类型...为什么我写了返回类型,VSCode还是提示返回值是any类型?泛型好复杂,什么时候要用泛型?接口类型定义要写在哪? 来,我们掰开揉碎一点点讲。 TS是谁写给谁看/用的?...就可以不用写成separator:string,TS会进行类型推断。...进一步,返回类型我们也可以不用定义,TS会根据split方法的返回类型来推断splitString的返回类型。 image.png 类型推论只适用于一些简单的类型,复杂的情况还是需要手动定义。

    1.6K10

    为什么网站中的CSS或JS会带有v或version参数

    在查看网页源码的时候经常会发现带有类似 ?v=13566 或者 ?version=15678 的 CSS 和 JS 文件。如下所示: js?...第二、客户端会缓存这些CSS或JS文件,每次更新了 JS 或 CSS 文件后,改变版本号,客户端浏览器就会重新下载新的JS或CSS文件,起到刷新缓存的作用。...原理: 例如 .htaccess 设置的 CSS、JS 缓存都有一个过期时间,如果在访客的浏览器中已经缓存了这些文件,在这些缓存未过期之前,浏览器只会优先从缓存中读取这些 CSS 和 JS 文件,如果你在服务器上修改了这些文件...一个网站的访客成千上万,你不可能在更新 CSS 后让每个访客都刷新一下缓存,那么这个问题你会怎么处理呢? 方法一:更改CSS文件名 其实解决这个问题很简单,缓存是通过文件名标记缓存的内容的。...的资源,所以方法二可能会导致你原先的缓存功能失效,可以改用第一种方法。

    5.5K10

    微服务与Node.js为什么会广受喜爱?

    扩展难,并且会造成资源浪费,因为当某个局部承不住压力时,需要对整体进行扩展 2. 部署难,每次发布新功能,都需要重新部署整个项目,即使是一个很小的改动 3....高效 Node.js 的包管理器 npm 拥有数量惊人的模块,可以立即使用,节省大量的开发工作 Node.js 基于 JS,所以前端开发人员也很容易上手,整栈都使用同一个语言,前后端使用同样的模块,...性能好 在创建高性能的实时应用时,Node.js 是非常好的方案,因为他的非阻塞,事件驱动I/O模型 GoDaddy公司是采用 Node.js 开发微服务的典型案例,他们给出了自己的性能数据:...java,c# 在2015年,Node.js 得到了Linux基金会的长期支持 案例 PayPal 2013之前,PayPal是java技术栈的单体结构,2013初开始向 Node.js 微服务架构迁移...Netflix Netflix 也是2013开始的 Node.js 微服务改造,之前是一个巨大的单体,启动一次需要40分钟,完全无法高效快速的发展 后来网站改为单页结构,采用了 Node.js,Node.js

    1K100

    Node.js 是什么?我为什么选择它?

    一度认为这是很伟大的,在众多编程语言里,为什么会选择 JavaScript 呢?且看下面介绍。 为什么是 JavaScript?...为什么选择 JavaScript 作者 Ryan Dahl 应该是最有发言权的,这里查了一些资料及参考了 深入浅出 Node.js 一书,供大家有个初步的认知。...I/O 密集型场景 Node.js 的优势主要在于事件循环,非阻塞异步 I/O,只开一个线程,不会每个请求过来我都去创建一个线程,从而产生资源开销。...HTTP 来实现,了解网络模型的同学可能知道,如果我们现在通过 TCP 的方式是不是会更高效呢?...最后一点建议:不要给自己设定边界,例如:我一定要学习 Node.js 或者我一定要学习 Java 又或者 Python,其实在有条件的情况下可以多接触一些其它东西,一方面扩展了自己的边界,另一方面自己也可以从中获取收益

    2.9K21

    简单的 for 循环也会踩的坑

    ,打印之后输出的是: name=b name=b 并不是我们预期的: name=a name=b 坑一 由于写 go 的资历尚浅、道行更是浅薄,这 bug 我硬是找了个把小时;刚开始还以为是数据源的问题...通过官方源码可以得知,for range 只是语法糖,本质上也是 for 循环;因为每次都是对同一个对象遍历赋值,所以便会出现这样的“乌龙”。...defer 的坑 for 循环 + defer 也是组合坑(虽然不推荐这么用),还是先来看个例子: // demo1 func main() { a := []int{1, 2, 3} for _...总结 类似于第一种情况在 for 循环中 goroutine 调用,我觉得 IDE 完全是可以做到提醒的;比如 IDEA 中就把大部分认为可能发的错误包含进去,期待后续 goland 的更新。...github.com/golang/go/wiki/CommonMistakes#using-reference-to-loop-iterator-variable只是大部分人估计都没去看过,这事之后我也得花时间好好阅读下

    62710

    关于JS循环遍历的汇总

    https://blog.csdn.net/j_bleach/article/details/61615347 关于JS循环遍历 写下这篇文章的目的,主要是想总结一下关于...JS对于集合对象遍历的方式方法,以及在实际应用场景中怎样去使用它们。...这两个的区别是,while会先判断是否满足条件,然后再去执行花括号里面的任务,而do while则是先执行一次花括号中的任务,再去执行while条件,判断下次还是否再去执行do里面的操作。...也就是说 do while至少会执行一次操作,生产中这个就可能用的比较少了,因为他与接下来要讲的for循环相比,个人觉得可读性上差了一点。...在JS当中,数组也算作对象,但一般不推荐把for…in用在数组遍历上面,如果for…in普通数组的话,a返回数组的索引。

    4.4K20
    领券