假設我有這樣的對象:如何改變的最深刻的對象爲一個字符串值,如果它是在JavaScript空對象
{CONN_INFO: {CFGSwitch: {412: {}}}}
它已爲4的深度我要重新分配的關鍵412
到"{}"
這種用於檢查深度最終對象將是
{CONN_INFO: {CFGSwitch: {412: "{}"}}}
功能:
function checkDepth(object) {
var level = 1;
var key;
for(key in object) {
if (!object.hasOwnProperty(key)) continue;
if(typeof object[key] == 'object'){
var depth = checkDepth(object[key]) + 1;
level = Math.max(depth, level);
}
}
return level;
}
我有這樣的東西,但我不確定它是最佳的還是適用於所有情況。將不勝感激任何投入。
function checkIfLastLevelEmpty(obj, depth) {
for (var key in obj) {
var val = obj[key];
if (Object.keys(obj[key]).length === 0) {
obj[key] = "{}";
}
else {
if (depth >0) {
checkIfLastLevelEmpty(val, depth-1);
}
}
}
}
也許這可以幫助你http://stackoverflow.com/questions/13523951/how-to-check-the-depth-of-an-object – b2ok
在你的checkIfLastLevelEmpty函數中,深度的目的是什麼'變量,是否提供最大深度限制? –
@Blue是的,我對遞歸函數不太熟悉,但是如果深度爲0並且沒有空對象,我將使用深度變量作爲出口。我已將當前的代碼更新爲原始問題。 – tchan