」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何有效率地在嵌套的 JavaScript 物件中尋找特定物件?

如何有效率地在嵌套的 JavaScript 物件中尋找特定物件?

發佈於2024-11-09
瀏覽:523

How to Efficiently Find a Specific Object in Nested JavaScript Objects?

迭代嵌套的JavaScript 物件

迭代嵌套的JavaScript 物件可能具有挑戰性,特別是當您需要基於屬性檢索特定對象時價值。讓我們考慮以下範例:

var cars = {
  label: 'Autos',
  subs: [
    {
      label: 'SUVs',
      subs: []
    },
    {
      label: 'Trucks',
      subs: [
        {
          label: '2 Wheel Drive',
          subs: []
        },
        {
          label: '4 Wheel Drive',
          subs: [
            {
              label: 'Ford',
              subs: []
            },
            {
              label: 'Chevrolet',
              subs: []
            }
          ]
        }
      ]
    },
    {
      label: 'Sedan',
      subs: []
    }
  ]
};

如果我們想檢索「Ford」品牌的對象,我們可以使用遞歸方法:

const iterate = (obj, identifier) => {
  for (let key in obj) {
    if (obj[key]['label'] === identifier) {
      return obj[key];
    }
    if (typeof obj[key] === 'object' && obj[key] !== null) {
      const result = iterate(obj[key], identifier);
      if (result) {
        return result;
      }
    }
  }
  return null;
};

const fordObject = iterate(cars, 'Ford');

在此範例中,iterate 函數採用兩個參數:要搜尋的物件和識別字串。它迭代物件的屬性,檢查標籤屬性是否與識別符相符。如果不是,它會檢查該屬性是否為另一個物件並繼續迭代。如果沒有找到符合的對象,則傳回null。

最新教學 更多>
  • 以下是一些標題選項,請記住問題格式:

簡單直接:

* 如何用JavaScript動態調整輸入欄位寬度?
* 建立響應式輸入欄位:JavaScript So
    以下是一些標題選項,請記住問題格式: 簡單直接: * 如何用JavaScript動態調整輸入欄位寬度? * 建立響應式輸入欄位:JavaScript So
    動態調整輸入字段的寬度以適應其輸入動態調整輸入字段的寬度以匹配其內容長度可以增強用戶體驗防止佈局混亂。雖然設定固定寬度可能會導致多餘的空間或截斷文本,但動態方法可確保輸入欄位具有視覺吸引力和功能性。 不幸的是,使用 CSS 的 min-width 屬性來設定最小寬度不適用於輸入欄位。然而,現代瀏覽器...
    程式設計 發佈於2024-11-09
  • 如何使用 JavaScript 從 iFrame 重新導向父視窗?
    如何使用 JavaScript 從 iFrame 重新導向父視窗?
    從iFrame 重定向父視窗如果父視窗中嵌入了iFrame,則可能需要重定向父視窗視窗的位置更改為新的URL。為了實現這一點,JavaScript 提供了一個簡單的解決方案。 使用JavaScript 重新導向父視窗在iFrame 的JavaScript 程式碼中,您可以使用以下方法: 重定向最頂層...
    程式設計 發佈於2024-11-09
  • 如何使用 Curl 模擬 Web 瀏覽器的 GET 請求?
    如何使用 Curl 模擬 Web 瀏覽器的 GET 請求?
    使用Curl 模擬Web 瀏覽器的GET 請求嘗試使用curl 檢索網頁時,您可能會遇到似乎源於以下原因的錯誤無法辨識或未實現的請求標頭。這是因為curl本身並不會模擬網頁瀏覽器的GET請求標頭。 要正確模擬網頁瀏覽器,請依照下列步驟操作:設定使用者代理程式:使用CURLOPT_USERAGENT為...
    程式設計 發佈於2024-11-09
  • 透過「從參數中提取資訊」專案釋放您的 Python 能力
    透過「從參數中提取資訊」專案釋放您的 Python 能力
    您準備好將您的 Python 技能提升到新的水平了嗎? LabEx 提供的「從參數中提取資訊」專案就是您的最佳選擇。這個引人入勝的項目將引導您完成從給定文本中提取數字、計算平均值並將結果格式化為小數點後兩位的過程。潛入並釋放你作為 Python 程式設計師的真正潛力! 踏上令人興奮...
    程式設計 發佈於2024-11-09
  • HTML 表單中的預設提交按鈕行為是什麼?
    HTML 表單中的預設提交按鈕行為是什麼?
    確定HTML 表單中的預設提交按鈕在未按一下特定提交按鈕的情況下提交HTML 表單時,例如按輸入或在JavaScript 中使用HTMLFormElement.submit(),瀏覽器需要確定多個提交按鈕(如果有)中的哪一個應被視為按下的按鈕。此確定對於觸發 onclick 事件處理程序和傳送到 W...
    程式設計 發佈於2024-11-09
  • 如何在Python中實現非同步Shell指令執行:探索最佳實踐
    如何在Python中實現非同步Shell指令執行:探索最佳實踐
    Python 中的非同步Shell 指令執行:探索替代方法從Python 腳本非同步執行外部指令是一項有價值的技術,允許持續執行腳本當外部命令執行其任務時。本文探討了實現這種異步行為的適當方法,重點關注os.system() 和subprocess.Popen.os.system() 和& 符號 的...
    程式設計 發佈於2024-11-09
  • 狀態測試案例中的 ReactDOM.unstable_batchedUpdates。
    狀態測試案例中的 ReactDOM.unstable_batchedUpdates。
    在本文中,我們將研究 ReactDOM.unstable_batchedUpdates 在測試案例中的使用,特別是在 Zustand(React 的流行狀態管理庫)中。我們還將分解測試並解釋批次更新如何透過最小化不必要的重新渲染來增強 React 的效能。 理解測試案例 這是我們將...
    程式設計 發佈於2024-11-09
  • 如何使用 jQuery 和 CSS 建立響應式水平頁面滑動系統?
    如何使用 jQuery 和 CSS 建立響應式水平頁面滑動系統?
    響應式水平頁面滑動問題設計響應式水平導航系統面臨幾個挑戰:維護頁視窗內的可見性防止之間的間隙或重疊頁允許頁超出100%高度,並具有捲軸可見性確保與Internet Explorer 9 或更高版本的兼容性解決方案該解決方案採用jQuery 並包含以下主要功能:響應式調整大小:腳本根據頁數計算包裝器的...
    程式設計 發佈於2024-11-09
  • 為什麼編譯器中的「static_assert」與非型別模板參數的行為不同?
    為什麼編譯器中的「static_assert」與非型別模板參數的行為不同?
    編譯器中非型別模板參數的 static_assert 行為不一致 在 C 中,static_assert 在編譯時可驗證條件。然而,最近的觀察發現,當 static_assert 與不同編譯器中的非類型模板參數結合使用時,其行為存在差異。 具體來說,以下程式碼片段:template <int ...
    程式設計 發佈於2024-11-09
  • 何時以及如何在 JavaScript 的 parseInt() 函數中使用 Radix?
    何時以及如何在 JavaScript 的 parseInt() 函數中使用 Radix?
    了解 parseInt 中對基數的需求JavaScript 中的 parseInt() 函數可讓您將表示數字的字串轉換為整數。但是,您可能不會總是希望將整數解析為以 10 為基數的數字。這就是基數參數發揮作用的地方。 什麼是基數? 基數是指在數字系統中單一數字可以表示的值的數量。例如,我們常用的十進...
    程式設計 發佈於2024-11-09
  • 嘗試重載佇列構造函數
    嘗試重載佇列構造函數
    此專案旨在透過新增兩個新的建構子來改進 Queue 類別。 第一個建構子將從另一個現有佇列建立一個新佇列。 第二個建構子將允許您建立具有初始值的佇列。 這些建構子顯著提高了 Queue 類別的可用性。 1 建立一個名為 QDemo2.java 的文件,並將更新後的 Queue 類別從 Tr...
    程式設計 發佈於2024-11-09
  • 實施訂單處理系統:零件監控與警報
    實施訂單處理系統:零件監控與警報
    1. Introduction and Goals Welcome to the fourth installment of our series on implementing a sophisticated order processing system! In our pre...
    程式設計 發佈於2024-11-09
  • 以客戶端為中心的錯誤處理
    以客戶端為中心的錯誤處理
    了解和处理错误 为了有效地处理错误,必须了解可能发生的错误类型。让我们首先对您可能遇到的错误进行分类。 Web 客户端环境中的错误类型 网络错误 连接问题:与服务器建立连接时出现问题。 超时:请求花费太长时间才能收到响应。 DNS 错误:域名解析问题...
    程式設計 發佈於2024-11-09
  • 如何在Python中高效率計算目錄大小?
    如何在Python中高效率計算目錄大小?
    使用 Python 進行目錄大小計算為了測量目錄的空間佔用情況,Python 提供了幾種方法。以下我們深入探討一個高效率、全面的解決方案:import os def directory_size(start_path): total_size = 0 for root, direct...
    程式設計 發佈於2024-11-09
  • 如何修復Go模組導入過時的套件版本?
    如何修復Go模組導入過時的套件版本?
    Go 模組匯入過時的套件版本嘗試使用Go 模組將新套件合併到專案時,您可能會遇到以下問題:儘管該套件被標記為“最新”,但模組系統會檢索該套件的過時版本。這個過時的版本可能缺少程式碼所需的功能,從而導致編譯或執行時錯誤。 解決方案:在 go.mod 檔案中指定版本Go 模組系統可讓您指定要匯入的套件的...
    程式設計 發佈於2024-11-09

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3