var a = {
aa: {
aaa: 1,
bbb: {
aaaa: 9
},
ccc: {
aaaa: {
aaaaa: 9090,
bbbbb: 90909
}
}
}
}
假如有以上对象a,求a的深度。换做一个更加普通的,未知的对象,该如何解决?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
没有考虑数组里的object的深度
求a的深度?是不是想访问对象里面的值呢?如果是使用.符号,比如访问bbbbb的值:console.log(a.aa.ccc.aaaa.bbbbb);
没想到好方法, 简单一点就是不断遍历对象的属性,如果属性值是对象的话在遍历这个对象,知道所有的都不是对象
前提是你的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);