• 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
    

      

  • 相关阅读:
    线程的等待与唤醒
    多线程start()与run()的区别
    Thread与Runnable
    关于i++和++i的一些见解
    Mysql优化(转)
    Java 注解
    Java 泛型(转)
    Java 中的CAS
    CAS ABA问题
    Java 线程池分析
  • 原文地址:https://www.cnblogs.com/zhu-xingyu/p/5344913.html
Copyright © 2020-2023  润新知