假设我有这样的对象:如何改变的最深刻的对象为一个字符串值,如果它是在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