JS:各种遍历方式总结

2023-10-29

js的遍历方式真的是有很多,有用于遍历数组的,也有用于遍历对象的……各种方式有什么样的应用场景?如何选择恰当的遍历方式?很容易就让人迷糊,所以做一下总结吧。

第一种:普通for循环

// 直接遍历出的是索引,注意每次遍历都需要获取一次arr的长度。
for (j = 0; j < arr.length; j++) {
   
}

简要说明: 最简单的一种,也是使用频率最高的一种,虽然性能不弱,但仍有优化空间。

有索引就能方便地获取值。

支持continue和break。

第二种:优化版for循环

for (j = 0, len=arr.length; j < len; j++) {

}

简要说明: 使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显。

这种方法基本上是所有循环遍历方法中性能最高的一种。

第三种:forEach循环

arr.forEach(function(item, index){

});

简要说明: 数组自带的forEach循环,使用频率较高,实际上性能比普通for循环弱

可以直接获取索引和值。但是forEach不支持break和continue。可以支持return,js中return和continue的功能类似,可以退出当前方法,即相当于跳过本次循环???

第四种:forEach变种

Array.prototype.forEach.call(arr, function(item, index){

});

简要说明: 由于foreach是Array型自带的,对于一些非这种类型的,无法直接使用(如NodeList),所以才有了这个变种,使用这个变种可以让类似的数组拥有foreach功能。

实际性能要比普通foreach弱。

第五种:for…in循环

其实for…in循环是为了遍历对象的属性而设计的:​​​​

for ( 键名 in 被遍历的对象 ) {
	// 需要执行的代码
}

获取键名之后如何获取属性值呢?通过目标对象[键名],而不能使用点号.键名,否则会显示

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JS:各种遍历方式总结 的相关文章

  • Wt C++ Web 框架的主机,部署问题

    我想知道 justhost com 是否足以托管 Wt C 网站 应用程序 它确实允许 FTP 和 SSH 访问http richelbilderbeek nl CppWtDeployGlobalHosted htm http richel
  • 客户端语言

    我不是网络程序员 所以请原谅我的无知 当谈到服务器端编程时 我们有很多可用的技术 例如 PHP ASP net JSP 等 然而 说到客户端脚本 我只听说过 JavaScript 和 AJAX 也许您还可以包含 Java Applet 因为
  • 如何访问随机网站? - Python

    如何生成随机但有效的网站链接 无论语言如何 事实上 它生成的网站语言越多样化越好 我一直在使用其他人网页上的脚本来做到这一点 我怎样才能不依赖这些随机站点转发脚本并制作自己的脚本 我一直这样做 import webbrowser from
  • 在 Foundation 中动态设置 Sass 变量

    如何在 Foundation 中动态设置 Sass 变量 根据他们的文档 http foundation zurb com docs components tables html 您可以借助一些 Sass 变量来自定义表格 settings
  • 如何使用 mysql 从 php 中的表中返回多行

    我决定为我的家人建立一个梦幻足球网站 但我无法从数据库返回多行 我想要的 进行一次 sql 调用并获取整个玩家列表 以便我可以填充一个对象或对象列表 如果整个桌子都可以归还那就太好了 我的目标是简单地向用户显示待选秀的可用球员列表 目前 通
  • 使用 ruby​​ on Rails 向静态网站添加功能

    我是 ruby on Rails 的新手 我有一个包含很多静态页面的网站 我想向网站添加一些动态页面 我将在 ruby on Rails 中开发这些页面 当用户单击静态页面之一上的按钮之一时 将触发这些页面提供的功能 我想我将把动态页面放在
  • 你能用c++加载一个网页,包括JS和动态html并获取渲染的DOM字符串吗?

    是否可以用 C 加载网页并获取渲染的 DOM 不仅仅是 HTTP 响应 还有 java 脚本运行后 可能是让它运行一段时间后 呈现的 DOM 特别是随着时间的推移可能发生变化的动态 HTML 有这个库吗 或者 如果不是 c 您是否知道可以用
  • 根据 $_POST 值填充字段

    我正在寻求有关我试图填写的表格的帮助 我通常会使用 onChange 函数 但我认为这不是一个选择 基本上我有一个
  • 通过站点到站点 VPN 将 Azure 网站连接到本地数据库

    我的目标是运行一个天蓝色的网站 该网站可以访问我们本地公司数据库中的数据 我按照网络上的教程设置了一个 Azure 虚拟网络 并通过站点到站点 VPN 将其连接到我们本地公司网络 在天蓝色门户中 我可以看到连接实际上正在工作 并且数据已被接
  • 最长和最短的 HTML 字符实体名称是什么? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 管子周围有
  • 使用 hg 存储库作为网站

    这与我的安全问题有些相关here https stackoverflow com questions 2361626 security deny access to hg via mod rewrite 对实时网站使用 hg Mercuri
  • 从 Unity WebGL 调用 Angular2 函数

    目前 我正在使用 Angular2 版本 2 1 2 和 Unity 可视化工具 使用 Unity 5 5 构建 我需要做的是从 Unity 到 Angular2 进行通信 我正在使用类似于下面的代码 public void GetBill
  • 对同一域发出 get 请求,出现 CORS 错误

    在浏览器扩展中 这是我的 ajax 调用 var xhr new XMLHttpRequest xhr open GET window location href true xhr responseType arraybuffer xhr
  • HTML if 语句在 CDN 失败时加载本地 JS/CSS

    当从 CDN 或任何外部服务器加载 CSS JS 文件时 有可能 即使概率很低 由于外部故障而丢失该文件 在这种情况下 html 页面将因缺乏适当的 CSS 和 JS 而被损坏 有没有一种实用的方法可以在 CDN 故障时加载本地版本 IF
  • asp.NET 2.0网站无法访问App_Code中的类

    将我的网站部署到服务器后 我在访问课程时遇到问题 请注意 这是一个网络Site不是网络应用 错误是 编译器错误消息 CS0246 找不到类型或命名空间名称 Order 是否缺少 using 指令或程序集引用 版本信息 Microsoft N
  • 如何保护我的网站免遭 HTTrack 或其他软件的翻录?

    我最近获得了批准的网站模板主题森林 http themeforest net 我的网站流量过多 并注意到我在 Themeforest 上的演示被 HTTrack 等某些软件破坏 如果这种情况持续下去 该产品的销量最终可能会下降 那么 有什么
  • 为什么使用HTTP协议时需要指定端口号?

    即使我们使用HTTP协议 为什么还需要用IP地址指定端口号 例如 http xyz 8080 这到底是什么意思 我们已经知道 在使用 HTTP 时 请求将在端口 80 上提供服务 那么为什么我们要显式指定端口呢 HTTP 的默认端口为 80
  • VSTS 构建失败/发布无法在 bin 文件夹中找到 roslyn\csc.exe

    我们有一个网站项目 安装了以下 nuget 软件包 Microsoft CodeDom Providers DotNetCompilerPlatform 1 0 8 Microsoft Net Compilers 2 4 0 The web
  • 使用“邮递员”chrome 应用程序的肥皂请求正文

    假日网络服务 的肥皂请求正文会是什么样子 http www holidaywebservice com HolidayService v2 HolidayService2 asmx wsdl http www holidaywebservi
  • 烧瓶 - 404 未找到

    我是烧瓶开发的新手 这是我在烧瓶中的第一个程序 但它向我显示了这个错误 在服务器上找不到请求的 URL 如果您输入了网址 请手动检查拼写并重试 这是我的代码 from flask import Flask app Flask name ap

随机推荐

  • try-catch和throw,throws的区别和联系

    区别一 throw 是语句抛出一个异常 throws 是方法抛出一个异常 throw语法 throw lt 异常对象 gt 在方法声明中 添加throws子句表示该方法将抛出异常 如果一个方法会有异常 但你并不想处理这个异常 就在方法名后面
  • 【牛客面试必刷TOP101】Day4.BM15删除有序链表中重复的元素-I和BM17二分查找-I

    作者简介 大家好 我是未央 博客首页 未央 303 系列专栏 牛客面试必刷TOP101 每日一句 人的一生 可以有所作为的时机只有一次 那就是现在 文章目录 前言 一 删除有序链表中重复的元素 I 题目描述 解题分析 二 二分查找 I 题目
  • java与数据库数据加密方法

    1 java测试加密代码 AES和HEX加密及解密工具类 AES加解密字符串工具类 public class AesEncrypt public static void main String args String aes en aes
  • mysql数据库总结_mysql数据库总结

    1 root localhost yum y install mysql mysql server 利用yum在线安装mysql数据库 2 root localhost chkconfig mysqld on 设置开机启动mysqld服务
  • Android网络请求,全方位优雅解析

    网络请求的基本流程 网络请求步骤 用户输入一个网址到网页最终展现到用户面前 大致流程总结如下 在客户端浏览器中输入网址URL 发送到DNS 域名服务器 获得域名对应的WEB服务器的IP地址 客户端浏览器与WEB服务器建立TCP 传输控制协议
  • webpack chunkFilename设置name后不生效,id 生效

    preface 最近又开启新项目了 以之前的某个项目为基础搭建 我进行了优化 遇到了 chunkfilename name 配置后不生效 之前配置 webpack 2 6 1 webpack 配置 output path config bu
  • Jenkins从Gitlab拉取代码

    做持续集成经常需要从代码管理 下面讲一下如何使用Jenkins从Gitlab拉取代码 这里采用的是私钥 公钥配对模式 自己本地生成一堆秘钥 gitlab系统配置里选择Deploy Keys 内容为公钥 在Jenkins里新建Credenti
  • 【Python蒙特卡罗法计算圆周率】

    蒙特卡罗法计算圆周率 今天遇到一个很有意思的方法求解圆周率 给大家分享一下 理论基础 蒙特卡罗法也称统计模拟法 统计试验法 是把概率现象作为研究对象的数值模拟方法 是按抽样调查法求取统计值来推定未知特性量的计算方法 蒙特卡罗是摩纳哥的著名赌
  • Qt5.3 MIPS Openwrt交叉编译 移植

    网上关于ARM Linux移植比较多 在此把qt mips linux移植过程记录如下 参考https blog csdn net yihui8 article details 39503645 目标板 MIPS Openwrt 宿主 Ub
  • 计算机基础ppt2010知识点,《计算机应用基础(PowerPoint2010电子演示文稿系统)》...

    计算机应用基础 PowerPoint2010电子演示文稿系统 是教育部 十二五 职业教育国家规划教材 本书以向学习者传授计算机基础知识和培养计算机应用能力为主线 系统地介绍了计算机应用基础的一般理论和实训 本书的内容着重计算机的基础知识 基
  • Sqlserver中如何快速写入千万级测试数据

    数据库结构 id int username nvarchar 50 password nvarchar 50 addtime datetime token nvarchar 50 roleid int 一 程序中写for循环 实测一分钟写入
  • STM32_3(GPIO)

    一 GPIO简介 GPIO General Purpose Input Output 通用输入输出口 8种输入输出模式 输出模式可控制端口输出高电平 驱动LED 蜂鸣器 模拟通信协议输出时许等 输入模式可读取端口的高低电平或电压 用于读取按
  • Qt扩展-KDDockWidgets 简介及配置

    Qt扩展 KDDockWidgets 简介及配置 一 概述 二 编译 KDDockWidgets 库 1 Cmake Gui 中选择源文件和编译后的路径 2 点击Config 配置好编译器 3 点击Generate 4 在存放编译的文件夹输
  • Win10+OpenCV2.4.13+VS2013+CUDA7.5配置教程

    首先说明一下 OpenCV2 3 13之前的版本不支持CUDA7 5 因此配置总是会出问题 在OpenCV官网下载OpenCV2 4 13版本 此版本支持CUDA7 5 另外OpenCV2 4 13是支持VS2013的 但不清楚支不支持VS
  • 力扣:旋转数组(Java)

    给你一个数组 将数组中的元素向右轮转 k 个位置 其中 k 是非负数 class Solution public void rotate int nums int k int n nums length k n rotate 2 nums
  • MySQL脏读、不可重复读、幻读

    MySQL脏读 不可重复读 幻读 事务的特性 ACID 原子性 Atomicity 指处于同一个事务中的多条语句是不可分割的 即一个事务内的所有语句 要么全部成功要么全部失败 一致性 Consistency 事务必须使数据库从一个一致性状态
  • gpio上拉下拉区别

    gpio上拉下拉区别 GPIO是一颗芯片 MCU 必须具备的最基本外设功能 GPIO通常有三种状态 高电平 低电平和高阻态 高阻态换句话说就是断开状态或浮空态 因此上拉和下拉其中一个强大的理由就是为了防止输入端悬空 使其有确定的状态 减弱外
  • 【经典】修改SpringBoot的默认服务器Tomcat,替换Tomcat

    以下将介绍如何替换掉SpringBoot默认服务器Tomcat 我们将从两个案例 替换为Jetty和替换为UnderTow Tomcat是目前较流行的web容器 但过于臃肿 Jetty是个内嵌WEB容器 支持长连接 如聊天等长时间保持连接
  • 图论----同构图(详解)

    图论当中的术语 假设G V E 和G1 V1 E1 是两个图 如果存在一个双射m V V1 使得对所有的x y V均有xy E等价于m x m y E1 则称G和G1是同构的 这样的一个映射m称之为一个同构 如果G G1 则称他为一个自同构
  • JS:各种遍历方式总结

    js的遍历方式真的是有很多 有用于遍历数组的 也有用于遍历对象的 各种方式有什么样的应用场景 如何选择恰当的遍历方式 很容易就让人迷糊 所以做一下总结吧 第一种 普通for循环 直接遍历出的是索引 注意每次遍历都需要获取一次arr的长度 f