zoukankan      html  css  js  c++  java
  • Js练笔——用循环和递归实现追踪对象深度(循环引用关系不考虑)

         function reobs(obj){ //返回对象中对象属性组成的数组
          	    var a=[];
          	    var b=[];
          	     for(it in obj){
                	a.push(it);
                }
                for(var i=0;i<a.length;++i){
            	if(typeof(obj[a[i]])=="object"){
                  
            	  b.push(obj[a[i]]);} //将将对象数组存起来
                 
                }
              return b; //返回对象属性组成的数组
          }
    
          function oql(obj){
                      var a=[]; //存放对象层级属性的数组
                      var count=1; //计数
                      a=reobs(obj);  //第一层属性对象数组
                      while(a.length>0){ //如果存在对象属性
                          count++;
                          var b=[];
                          for(var i=0;i<a.length;i++){
                             b=b.concat(reobs(a[i]));
                          	}
                          a=b;
                        }
                    return count; 
                }
                //递归实现
             var count=1;
             function qlOb(items){
                	  var a=[];
                       for(var i=0;i<items.length;++i){
                       	a=a.concat(reobs(items[i]));
                       }
                       if(a.length==0){return count;}
                       else{
                       	  count++;
                       	 return qlOb(a);
                       }
                     }
    
               var b={
                	name:{a1:1,a2:2,a3:{pro11:11}},
                	age:18,
                	hobby:"足球",
                	pro4:{pro5:{pro7:3,pro8:{pro9:9,pro10:{pro11:10}}}}
                }
    
                var c={
                	pro1:[{a1:1},{a2:2},{a3:3},{a4:{a5:5}}]
                }
              
                console.log(oql(b)); //5
                console.log(oql(c)); //4
    

      

  • 相关阅读:
    redis 数据库总结
    drf 序列化类总结
    drf 视图类经典总结
    celery 简介
    虚拟环境搭建pip换源
    git 与 svn,简介差别
    redis 数据库简介
    auth 模块
    python的注释与用户交互 基本数据类型
    python入门
  • 原文地址:https://www.cnblogs.com/zhu-xingyu/p/5344913.html
Copyright © 2011-2022 走看看