JSON是現在最流行的數據交換格式之一,其具有簡潔、易讀、易寫的特點,被廣泛應用于不同的編程語言中。在JSON數據中,有時候需要查找某個節點的所有父級節點,本文將會介紹如何實現這個功能。
//假設我們有一個JSON對象如下: var jsonData = { "name": "Alice", "age": 20, "address": { "province": "Guangdong", "city": "Shenzhen", "district": "Nanshan" } }; //查找所有父級節點的函數實現如下: function findParent(json, childKey) { var parentList = []; function traverse(obj, key) { if (obj !== null && typeof obj === "object") { for (var k in obj) { if (obj.hasOwnProperty(k) && obj[k] === childKey) { parentList.push(key); } else if (obj.hasOwnProperty(k)) { traverse(obj[k], k); } } } } traverse(json, null); return parentList; } //使用方式如下: var parentList = findParent(jsonData, "Nanshan"); console.log(parentList); //輸出 ["district", "address"]
上述代碼中,我們定義了一個名為findParent的函數用于查找JSON對象中所有父級節點,該函數接受兩個參數:一個JSON對象和所需查找的子節點的key值。函數中,我們使用遞歸的方式遍歷JSON對象中所有的key值,當遍歷到與子節點key值相同的節點時,我們將該節點的key值加入到parentList中。遞歸過程中,我們需要注意排除value為null、undefined、string等無需繼續遞歸的情況。
最后我們使用該函數來查找"district"節點的所有父級節點,發現"district"的父節點依次為"address"和根節點,結果正確無誤。
下一篇php tar xz