手记

js的数组或者对象的递归遍历问题

例如给定一个数组,他里面可能嵌套数组,嵌套的数组里面可能还有数组。
这种想得到所有元素组成一个数组,可以考虑用 递归遍历数组

递归遍历数组

例如[2,[6,7,12,34,3],[5,23,[1]]]

var arrs = [2 , [6,7,12,34,3] , [ 5,23,[1],9] ] ;
var arr  = [];
function recursive(arrs) {
  for(var i = 0; i < arrs.length; i++){
     if(typeof  arrs[i] === "number" ) {
          arr.push( arrs[i] );
           }else{
            recursive( arrs[i] );
           }
    }
}
recursive(arrs);
console.log(arr);

递归遍历对象

var obj = {
           a:{
               name : "maoguotao",
               age :  18,
               sex  : 'M',   
               },
           b:{
               name : "maoshuqin",
               age :  18,
               sex  : 'M',     
               },
           c:{
               name : "MGT360124",
               age :  18,
               sex  : 'M',     
               title : {
                       job:"班长"
                       } 
               }
};
var arr = [];
function   f( obj ) {
         for( var i  in  obj ) {
             if  ( typeof  obj[i] === "object"  ) {
                f ( obj[i] );
               }else{
                arr.push( obj[i] );
               }
        }
 }
 f( obj );
console.log(arr);

遍历对象的属性用for-in,但是要用hasOwnProperty判断

var obj = {
name:"maoguotao",
age:18,
sex:'M'
}
for ( var i in obj ) {
  if( obj.hasOwnProperty ( i )  ){
      console.log( i + ":" + obj[i] );
        }
}
5人推荐
随时随地看视频
慕课网APP