首頁 >web前端 >js教程 >如何遞歸迭代嵌套的 JavaScript 物件?

如何遞歸迭代嵌套的 JavaScript 物件?

DDD
DDD原創
2024-11-02 02:25:31502瀏覽

How to Recursively Iterate Through Nested JavaScript Objects?

迭代嵌套的JavaScript 物件[重複]

問題:
如何遞歸地迭代深度嵌套的JavaScript 物件以擷取基於給定標識符的特定物件(例如“標籤”屬性)?

解決方案:

帶有遞歸的原始答案

深度迭代使用遞歸的嵌套對象:

<code class="js">const iterate = (obj) => {
  Object.keys(obj).forEach((key) => {
    console.log(`key: ${key}, value: ${obj[key]}`);

    if (typeof obj[key] === 'object' && obj[key] !== null) {
      iterate(obj[key]);
    }
  });
};

console.log(iterate({ ...cars }));</code>

2023 更新:非遞歸方法

對於非遞歸方法:

<code class="js">const iterate = (obj) => {
  const stack = [obj];
  while (stack?.length > 0) {
    const currentObj = stack.pop();
    Object.keys(currentObj).forEach((key) => {
      console.log(`key: ${key}, value: ${currentObj[key]}`);
      if (typeof currentObj[key] === 'object' && currentObj[key] !== null) {
        stack.push(currentObj[key]);
      }
    });
  }
};

console.log(iterate({ ...cars }));</code>

在這兩種方法中,關鍵每個嵌套物件的值和值都會記錄到控制台。

以上是如何遞歸迭代嵌套的 JavaScript 物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn