首页 > 编程语言 >如何遍历一个普通的 JavaScript 对象?

如何遍历一个普通的 JavaScript 对象?

时间:2022-11-21 16:04:38浏览次数:42  
标签:遍历 obj 对象 Object value 普通 const JavaScript

如何遍历一个普通的 JavaScript 对象?_嵌套

英文 | https://javascript.plainenglish.io/how-to-loop-through-a-plain-javascript-object-e3d1a45c2319

翻译 | 杨小爱


JavaScript 对象是通过向它们添加属性来动态创建的。

因此,我们可能必须使用循环遍历其属性来获取值。

在本文中,我们将研究如何遍历纯 JavaScript 对象。

Object.keys

Object.keys 方法返回一个对象的所有非继承字符串属性键的数组。

要使用它,我们可以写:

const obj = {
a: 1,
b: 2,
c: 3
}
for (const key of Object.keys(obj)) {
console.log(key, obj[key])
}

我们使用 for-of 循环遍历 Object.keys 返回的键数组。

然后,我们可以通过将键传递到 obj 之后的方括号来访问该值。

所以我们看到:

a 1
b 2
c 3

登录。

Object.values

我们可以使用 Object.values 方法循环遍历对象的值。

例如,我们可以这样写:

const obj = {
a: 1,
b: 2,
c: 3
}
for (const value of Object.values(obj)) {
console.log(value)
}

Object.values 返回一个包含对象所有属性值的数组,因此,我们可以使用 for-of 循环来记录属性值。

所以,我们得到:

​1​​​​2​​​​3​

在控制台中。

Object.entries

此外,我们可以使用 Object.entries 方法返回一个包含键值对数组的数组。

为此,我们可以编写:

const obj = {
a: 1,
b: 2,
c: 3
}
for (const [key, value] of Object.entries(obj)) {
console.log(key, value)
}

我们从 Object.entries 返回的每个数组条目中解构键和值。

然后,我们可以将它们记录在循环体中。

我们得到了与上一个示例相同的结果。

循环遍历嵌套对象

要循环遍历嵌套对象,我们可以创建一个函数,该函数调用自身在对象的每个级别循环遍历它们的属性。

为此,我们写:

const obj = {
a: 1,
b: 2,
c: {
d: {
e: 4
},
f: 5
}
}
const loopNestedObj = obj => {
for (const [key, value] of Object.entries(obj)) {
console.log(key, value)
if (typeof value === 'object' && value !== null) {
loopNestedObj(value)
}
}
}
loopNestedObj(obj)

我们创建了带有 obj 对象的 loopNestedObj 函数。

在函数内部,我们有与前一个示例相同的循环。

但是,我们有一个 if 块来检查值的数据类型,看看它是否是一个对象。

如果是,那么我们调用 loopNestedObj 来循环遍历它的内容。

需要表达式 typeof value === ‘object’ && value !== null 来检查 value 是否是一个对象,因为 typeof null 也是 'object' 。

因此,我们需要两个检查来检查对象。

结论

我们可以使用 for-of 循环和 JavaScript 提供的各种静态对象方法来遍历对象。


学习更多技能请点击下方公众号

如何遍历一个普通的 JavaScript 对象?_数组_02

如何遍历一个普通的 JavaScript 对象?_javascript_03


标签:遍历,obj,对象,Object,value,普通,const,JavaScript
From: https://blog.51cto.com/u_15809510/5874069

相关文章

  • 24个带有示例的 JavaScript 数组方法
    英文| https://javascript.plainenglish.io/a-6-minute-guide-to-24-javascript-array-methods-52bf5f0e209c翻译|杨小二1、创建数组在Javascript中有多种创建数组的方......
  • 11个提高技能的JavaScript 技巧,附中奖者名单
    英文|https://levelup.gitconnected.com/12-javascript-features-youve-probably-never-used-db932c413cdd翻译|杨小二当我开始学习JavaScript时,我总是很想找到可以节......
  • Net6 反射反射程序员的快乐/遍历属性、字段、构造方法、函数及相关操作
    十年河东,十年河西,莫欺少年穷学无止境,精益求精反射反射,程序员的快乐,利用反射可以获取到私有属性及其值 在C#中反射无处不在,用好反射,就可以为所欲为有这么一个学生类:publicc......
  • javaScript 纯函数
    一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数叫做纯函数。为什么要煞费苦心地构建纯函数?因为纯函数非常靠谱,执行一个纯函数你不用担......
  • 轻松学会JavaScript事件
    文章目录​​事件与事件流​​​​事件监听(绑定事件方法)​​​​JavaScript事件​​​​鼠标事件​​​​表单事件​​​​键盘事件​​​​UI事件​​​​快速投票​​  ......
  • JavaScript基础快速复习
    目录学习信息01初识JavaScript浏览器执行JS过程JS的组成JS初体验JS的注释02JavaScript输入输出语句03变量变量概述变量的使用变量的语法扩展变量的命名规范04数......
  • 津巴多普通心理学
    批判性思维:1、观点来源是哪里?提出这个观点的人是否具有相关领域的专业知识?2、观点是合理的还是极端的?不寻常的观点需要不寻常的证据;用简单的方法解决复杂问题实属罕见......
  • LinkedList底层 和 实现LIst接口 3种遍历方式
       底层!    底层2.0(删除)  实现LIst接口3种遍历方式 ......
  • javascript - 练习题:事件练习 - 贪吃蛇
    贪吃蛇原生JS(非面向对象的方式),渡一教学的笔记;地图坐标{0,0}{1,0}{2,0}{3,0}{4,0}{0,1}{1,1}{2,1}{3,1}{4,1}{0,2}{1,2}{2,2}{3,2}{4,2}{0,3}{1,3}{2,3}{3,3}{4,3}{0,4}{1,4}......
  • javascript入门
    javascript入门1.javascript的介绍JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部......