var a = {
aa: {
aaa: 1,
bbb: {
aaaa: 9
},
ccc: {
aaaa: {
aaaaa: 9090,
bbbbb: 90909
}
}
}
}
假如有以上对象a
,求a的深度。换做一个更加普通的,未知的对象,该如何解决?
var a = {
aa: {
aaa: 1,
bbb: {
aaaa: 9
},
ccc: {
aaaa: {
aaaaa: 9090,
bbbbb: 90909
}
}
}
}
假如有以上对象a
,求a的深度。换做一个更加普通的,未知的对象,该如何解决?
var count = 0;
function deep(obj){
for(key in obj){
if(obj[key].constructor == Object){
count++;
deep(obj[key]);
}
}
}
deep(a);
console.log(count);
function(object) {
var level = 1;
var key;
for (key in object) {
if (!object.hasOwnProperty(key)) continue;
if (typeof object[key] == 'object') {
var depth = utils.depthOf(object[key]) + 1;
level = Math.max(depth, level);
}
}
return level;
}
前提是你的object里面没有循环应用,否则这程序就死循环了。如果要防止这个,你就要记录下每个引用来比较了
//尽量用较少的代码来写,用了递归;
var depth = 1;
function getDepth(){return function(a){for(var i in a){var temp = typeof(a[i]);if (temp == 'object') {arguments.callee(a[i]);depth++;}}}}
getDepth()(a);
console.log(depth);
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答848 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
没有考虑数组里的object的深度