如果我有一個這樣的javascript對象:{a : { b: { c: { ... }}}}
,我該如何找到對象中是否有'x'鍵以及它的價值?當他的深度未知時,如何找到JavaScript Object中的鍵?
4
A
回答
8
只要他們不擔心循環引用,你可以做以下
function findX(obj) {
var val = obj['x'];
if (val !== undefined) {
return val;
}
for (var name in obj) {
var result = findX(obj[name]);
if (result !== undefined) {
return result;
}
}
return undefined;
}
注意:這將搜索此對象的屬性「X」直接或它的原型鏈。如果你特別希望將搜索範圍限制到這個對象,你可以這樣做,這樣做以下
if (obj.hasOwnProperty('x')) {
return obj['x'];
}
,並重復爲遞歸調用模式findX
+1
您需要將遞歸調用的值返回給findX ... –
+0
@Mike,謝謝。固定 – JaredPar
+2
請注意,這也將搜索原型鏈。如果不需要,請在其上調用幾個['hasOwnProperty'](http://es5.github.com/#x15.2.4.5)調用。 –
3
function hasKey(obj,key){
if(key in obj)
return true;
for(var i in obj)
if(hasKey(obj[i],key))
return true;
return false;
}
例如:
alert(hasKey({a:{b:{c:{d:{e:{f:{g:{h:{i:{}}}}}}}}}},'i'));
相關問題
- 1. 如何找到未知深度字典中的孩子?
- 2. 當節點的深度未知(GWT)時,如何遍歷Tree小部件?
- 3. 如何在JavaScript中找到訪問節點的深度?
- 4. python循環直到深度未知django
- 5. 當父鍵未知時,在嵌套的NSDictionary中查找對象?
- 6. 當深度未知時,挖掘渲染依賴列表
- 7. Python。在未知深度
- 8. JavaFX未知循環深度
- 9. 如何找到表達的深度?
- 10. 在未知深度對象上循環時遇到的問題
- 11. 如何知道matlab中24位深度圖像的深度值
- 12. JSON.stringify() - 如何知道替換器中的當前深度
- 13. 如何將未知深度/長度的數組發佈到c#/ mvc
- 14. 找到深度的樹haskell
- 15. 找到樹的深度?
- 16. 如何在SQL Server的表中找到外鍵關係的「深度」?
- 17. 物體的深度和深度知覺
- 18. 建設性操縱未知深度
- 19. 未找到JavaScript/jQuery鍵
- 20. 陣列深度未知時動態檢索值
- 21. C++如何深度複製未知數據類型的結構?
- 22. Python:如何完全遍歷未知深度的複雜字典?
- 23. 未知的Id.generator未找到
- 24. 如何從XPath中的標記中選擇深度未知的節點?
- 25. JavaScript - 如何檢查Object是否具有某個鍵,當鍵可變時?
- 26. 在javascript中的對象內設置屬性值未知的深度值
- 27. Object Animator的未知行爲
- 28. TreeView控件綁定到未知的深度XMLDocuent
- 29. 將文件保存到樹給定的樹未知樹深度
- 30. Java:找到在BST中找不到的節點的深度
嗯,如果有多個'x'鍵,你會怎麼做?例如。 '{a:{x:1},b:{x:2}}' – davin