遍历 JavaScript 对象属性

阅读时长 4 分钟读完

在前端开发中,经常需要遍历 JavaScript 对象的属性以实现特定的操作。本文将介绍遍历 JavaScript 对象属性的不同方法及其用法。同时,也会讨论一些高级技术,如递归和使用 Object.keysObject.entries 函数。

基础方法

for-in 循环

最基本的遍历对象属性的方法是通过 for-in 循环遍历对象的键名(即对象属性的名称):

-- -------------------- ---- -------
----- --- - - -- -- -- -- -- - --

--- ------ --- -- ---- -
  --------------- - -- - - ----------
-
-- -------
-- --- --
-- --- --
-- --- --

这种方法迭代整个对象的属性,包括从原型链上继承的属性。如果只想迭代对象自身的属性,可以使用 Object.hasOwnProperty() 方法判断属性是否为对象自身的属性:

-- -------------------- ---- -------
----- --- - - -- -- -- -- -- - --

--- ------ --- -- ---- -
  -- ------------------------- -
    --------------- - -- - - ----------
  -
-
-- -------
-- --- --
-- --- --
-- --- --

Object.keys()

另一种基础的遍历属性的方法是使用 Object.keys() 方法。它返回一个由对象属性组成的数组,可以使用 forEach() 方法或其他循环方法遍历:

-- -------------------- ---- -------
----- --- - - -- -- -- -- -- - --

------------------------------ -- -
  --------------- - -- - - ----------
---
-- -------
-- --- --
-- --- --
-- --- --

这种方法只遍历对象自身的属性,不包括从原型链上继承的属性。

Object.entries()

Object.entries() 方法返回一个由对象属性键值对组成的数组。可以在遍历时同时访问键名和键值:

-- -------------------- ---- -------
----- --- - - -- -- -- -- -- - --

---------------------------------- ------- -- -
  --------------- - -- - - -------
---
-- -------
-- --- --
-- --- --
-- --- --

这种方法也只遍历对象自身的属性,不包括从原型链上继承的属性。

高级方法

递归

当对象的某个属性本身又是一个对象时,可以使用递归来遍历嵌套的属性。例如,下面的代码使用递归输出所有嵌套对象的属性:

-- -------------------- ---- -------
----- --- - - -- - -- -- -- - -- -- - --

-------- ------------- -
  ------------------------------ -- -
    -- ------- -------- --- --------- -
      -------------------
    - ---- -
      --------------- - -- - - ----------
    -
  ---
-

--------------
-- -------
-- --- --
-- --- --
-- --- --

使用其它遍历方法

除了 for-in 循环、Object.keys()Object.entries() 方法外,还有许多其他遍历对象属性的方法。例如,可以使用 for-of 循环、Array.forEach() 方法或者 Array.reduce() 方法来遍历数组,再将数组转换为对象的属性。这里不会详细介绍这些方法,但需要注意的是,它们可能会在不同的 JavaScript 引擎中表现不同,或者对于某些类型的对象无法起作用。

结论

本文介绍了遍历 JavaScript 对象属性的基础方法(for-in 循环、Object.keys()Object.entries()

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/25769

纠错
反馈