JavaScript遍历对象的7种方式
注:纯手打,如有错误欢迎评论区交流!
转载请注明出处:https://blog.csdn.net/testleaf/article/details/145523427
编写此文是为了更好地学习前端知识,如果损害了有关人的利益,请联系删除!
本文章将不定时更新,敬请期待!!!
欢迎点赞、收藏、转发、关注,多谢!!!
目录
- 一、for...in 循环
- 二、Object.keys() 方法结合 forEach 方法
- 三、Object.values() 方法结合 forEach 方法
- 四、Object.entries() 方法结合 for...of 循环
- 五、Reflect.ownKeys() 方法结合 forEach 方法
- 六、Object.getOwnPropertyNames() 方法结合 forEach 方法
- 七、Object.getOwnPropertySymbols() 方法结合 forEach 方法
一、for…in 循环
for...in
循环用于遍历对象的可枚举属性,包括对象自身的属性以及继承的属性,但不包含 Symbol
类型的属性。
示例代码:
const person = {name: 'Alice',age: 25,occupation: 'Engineer'
};for (const key in person) {console.log(`${key}: ${person[key]}`);
}
注意事项:由于 for...in
会遍历继承的属性,若只想遍历对象自身的属性,可以使用 hasOwnProperty
方法进行过滤。
for (const key in person) {if (person.hasOwnProperty(key)) {console.log(`${key}: ${person[key]}`);}
}
二、Object.keys() 方法结合 forEach 方法
Object.keys()
方法会返回一个由对象的可枚举属性名组成的数组,然后可以使用 forEach
方法遍历这个数组。
示例代码:
const person = {name: 'Alice',age: 25,occupation: 'Engineer'
};const keys = Object.keys(person);
keys.forEach(key => {console.log(`${key}: ${person[key]}`);
});
三、Object.values() 方法结合 forEach 方法
Object.values()
方法会返回一个由对象的可枚举属性值组成的数组,然后使用 forEach
方法遍历这个数组。不过这种方式只能获取到值,无法直接获取对应的键。
示例代码:
const person = {name: 'Alice',age: 25,occupation: 'Engineer'
};const values = Object.values(person);
values.forEach(value => {console.log(value);
});
四、Object.entries() 方法结合 for…of 循环
Object.entries()
方法会返回一个由对象的键值对组成的二维数组,每个子数组包含一个键和对应的值,接着可以使用 for...of
循环遍历这个二维数组。
示例代码:
const person = {name: 'Alice',age: 25,occupation: 'Engineer'
};for (const [key, value] of Object.entries(person)) {console.log(`${key}: ${value}`);
}
五、Reflect.ownKeys() 方法结合 forEach 方法
Reflect.ownKeys()
方法会返回一个由对象的所有属性名(包括 Symbol
类型的属性)组成的数组,然后使用 forEach
方法遍历这个数组。
示例代码:
const symbolKey = Symbol('symbolKey');
const person = {name: 'Alice',age: 25,[symbolKey]: 'Secret'
};Reflect.ownKeys(person).forEach(key => {console.log(`${key}: ${person[key]}`);
});
六、Object.getOwnPropertyNames() 方法结合 forEach 方法
Object.getOwnPropertyNames()
方法会返回一个由对象自身的所有属性名(不包括 Symbol
类型的属性)组成的数组,再使用 forEach
方法遍历这个数组。
示例代码:
const person = {name: 'Alice',age: 25,occupation: 'Engineer'
};Object.getOwnPropertyNames(person).forEach(key => {console.log(`${key}: ${person[key]}`);
});
七、Object.getOwnPropertySymbols() 方法结合 forEach 方法
如果需要专门遍历对象的 Symbol
类型的属性,可以使用 Object.getOwnPropertySymbols()
方法,它会返回一个由对象自身的 Symbol
类型属性组成的数组,然后使用 forEach
方法遍历该数组。
示例代码:
const symbolKey = Symbol('symbolKey');
const person = {[symbolKey]: 'Secret'
};Object.getOwnPropertySymbols(person).forEach(symbol => {console.log(`${symbol.toString()}: ${person[symbol]}`);
});
相关文章:
JavaScript遍历对象的7种方式
注:纯手打,如有错误欢迎评论区交流! 转载请注明出处:https://blog.csdn.net/testleaf/article/details/145523427 编写此文是为了更好地学习前端知识,如果损害了有关人的利益,请联系删除! 本文章…...
如何避免NACK重传风暴
策略 1,10 次 NACK 模块对同一包号的最大请求次数,超过这个最大次数限制,会把该包号移出 nack_list,放弃对该包的重传请求。 策略 2,20 毫秒 NACK 模块每隔 20 毫秒批量处理 nack_list,获取一批请求包号…...

并发工具CountDownLatch、CyclicBarrier、Semaphore
文章目录 学习链接CountDownLatchCountDownLatch类的作用类的主要方法介绍图解await和countDown方法两个典型用法注意点总结示例CountDownLatchDemo1CountDownLatchDemo2CountDownLatchDemo1And2 CyclicBarrierCyclicBarrier循环栅栏CyclicBarrier和CountDownLatch的区别示例Cy…...

十二. Redis 集群操作配置(超详细配图,配截图详细说明)
十二. Redis 集群操作配置(超详细配图,配截图详细说明) 文章目录 十二. Redis 集群操作配置(超详细配图,配截图详细说明)1. 为什么需要集群-高可用性2. 集群概述(及其搭建)3. Redis 集群的使用4. Redis 集群故障恢复5. Redis 集群的 Jedis 开发(使用Java…...

网络工程师 (26)TCP/IP体系结构
一、层次 四层: 网络接口层:TCP/IP协议的最底层,负责网络层与硬件设备间的联系。该层协议非常多,包括逻辑链路和媒体访问控制,负责与物理传输的连接媒介打交道,主要功能是接收数据报,并把接收到…...

TensorFlow域对抗训练DANN神经网络分析MNIST与Blobs数据集梯度反转层提升目标域适应能力可视化...
全文链接:https://tecdat.cn/?p39656 本文围绕基于TensorFlow实现的神经网络对抗训练域适应方法展开研究。详细介绍了梯度反转层的原理与实现,通过MNIST和Blobs等数据集进行实验,对比了不同训练方式(仅源域训练、域对抗训练等&am…...
保姆级教程--DeepSeek部署
以DeepSeek-R1或其他类似模型为例,涵盖环境配置、代码部署和运行测试的全流程: 准备工作 1. 注册 Cloud Studio - 访问 [Cloud Studio 官网](https://cloudstudio.net/),使用腾讯云账号登录。 - 完成实名认证(如需长期使用…...
机器学习之心的创作纪念日
机缘 今天,是我成为创作者的第1460天。 在这段时间里,获得了很大的成长。 虽然日常忙碌但还在坚持创作、初心还在。 日常 创作已经成为我生活的一部分,尤其是在我的工作中,创作是不可或缺的,创作都是核心能力之一。…...
VeryReport和FastReport两款报表软件深度分析对比
在当今数据驱动的商业环境中,报表软件已经成为企业管理和数据分析的重要工具。无论是中小型企业还是大型企业,都需要依赖高效的报表工具来快速生成、分析和展示数据。市面上有许多报表工具,其中VeryReport和FastReport是两款备受关注的报表软…...
libtorch的c++,加载*.pth
一、转换模型为TorchScript 前提:python只保存了参数,没存结构 要在C中使用libtorch(PyTorch的C接口),读取和加载通过torch.save保存的模型( torch.save(pdn.state_dict()这种方式,只保存了…...

去除 RequestTemplate 对象中的指定请求头
目录 目标实现获取 RequestTemplate 对象去除请求头 目标 去除 RequestTemplate 对象中的指定请求头,如 Authorization 等。 实现 获取 RequestTemplate 对象 获取 RequestTemplate 对象的方式有很多种,如 通过 feign 虚拟客户端配置器: …...

b s架构 网络安全 网络安全架构分析
目录 文章目录 目录网络安全逻辑架构 微分段(Micro-segmentation)防火墙即服务(Firewall asa Service ,FWaaS)安全网络网关(Secure web gateway)净化域名系统(Sanitized Domain Na…...

【DeepSeek论文精读】2. DeepSeek LLM:以长期主义扩展开源语言模型
欢迎关注[【AIGC论文精读】](https://blog.csdn.net/youcans/category_12321605.html)原创作品 【DeepSeek论文精读】1. 从 DeepSeek LLM 到 DeepSeek R1 【DeepSeek论文精读】2. DeepSeek LLM:以长期主义扩展开源语言模型 【DeepSeek论文精读】3. DeepS…...
Spring Boot和SpringMVC的关系
Spring Boot和SpringMVC都是Spring框架的一部分,但它们的作用和使用方式有所不同。为了更好地理解它们的关系,我们可以从以下几个方面进行详细说明: 1. SpringBoot的作用 SpringBoot是一个开源框架,它的目的是简化Spring应用程序…...

java基础4(黑马)
一、方法 1.定义 方法:是一种语法结构,它可以把一段代码封装成一个功能,以便重复使用。 方法的完整格式: package cn.chang.define;public class MethodDemo1 {public static void main(String[] args) {// 目标:掌…...

nodejs - vue 视频切片上传,本地正常,线上环境导致磁盘爆满bug
nodejs 视频切片上传,本地正常,线上环境导致磁盘爆满bug 原因: 然后在每隔一分钟执行du -sh ls ,发现文件变得越来越大,即文件下的mp4文件越来越大 最后导致磁盘直接爆满 排查原因 1、尝试将m3u8文件夹下的所有视…...
注意力机制(Attention Mechanism)和Transformer模型的区别与联系
注意力机制(Attention Mechanism) 和 Transformer 模型 是深度学习领域中的两个重要概念,虽然它们紧密相关,但有着明显的区别。下面我们将从 定义、作用、结构 和 应用 等多个维度来分析这两者的区别与联系。 1. 定义 注意力机制(Attention Mechanism): 注意力机制是一…...

C++,设计模式,【单例模式】
文章目录 一、模式定义与核心价值二、模式结构解析三、关键实现技术演进1. 基础版(非线程安全)2. 线程安全版(双重检查锁)3. 现代C++实现(C++11起)四、实战案例:全局日志管理器五、模式优缺点深度分析✅ 核心优势⚠️ 潜在缺陷六、典型应用场景七、高级实现技巧1. 模板化…...

C++:类和对象初识
C:类和对象初识 前言类的引入与定义引入定义类的两种定义方法1. 声明和定义全部放在类体中2. 声明和定义分离式 类的成员变量命名规则 类的访问限定符及封装访问限定符封装 类的作用域与实例化类的作用域类实例化实例化方式: 类对象模型类对象的大小存储…...

官网下载Redis指南
1.访问官网 https://redis.io/downloads/#stack 2.点击redis图标 拉到下面点击download 在新页面拉到最下面,点击install from source 找到需要的大版本后,点击releases page 最后点击下载需要的版本号即可...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...