JavaScript 中複雜物件的遞歸循環
您的目標是嵌套歷JavaScript 中深度遍的物件結構,存取每個物件的名稱及其名稱子孫,等等。
for...in 循環
一個方法是利用for...in 循環:
<code class="javascript">for (var key in foo) { if (key === "child") { // Do something with the child } else if (key === "bar") { // Do something with the bar } else if (key === "grand") { // Do something with the grand } }</code>
處理原型屬性
使用for...in 時要小心,因為它也會迭代從原型繼承的屬性。為了避免這種情況,請使用hasOwnProperty 方法:
<code class="javascript">for (var key in foo) { if (!foo.hasOwnProperty(key)) continue; // Skip inherited properties if (key === "child") { // Do something with the child } // ... }</code>
遞歸函數
對於遞歸循環,請考慮定義一個遞歸函數:
<code class="javascript">function eachRecursive(obj) { for (var k in obj) { if (typeof obj[k] === "object" && obj[k] !== null) { eachRecursive(obj[k]); // Recurse into sub-objects } else { // Do something with key-value pairs } } }</code>對於遞歸循環,請考慮定義一個遞歸函數:
此函數將遍歷物件並遞歸地循環遍歷任何巢狀物件。
用法<code class="javascript">eachRecursive(foo);</code>要使用這些解,只要呼叫:
以上是如何在 JavaScript 中使用遞歸循環遍歷深度嵌套的物件結構的詳細內容。更多資訊請關注PHP中文網其他相關文章!