javascript - (面试题)js遍历复杂对象并 输出属性名!!!

查看:128
本文介绍了javascript - (面试题)js遍历复杂对象并 输出属性名!!!的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

昨天面试官问的题目,没答上来;

比如[{a:[{b:1,c:[{d:1},{e:1}]},{f:1},...]

就是一个数组,数组里面有多个对象,对象的值也是数组,数组里面还是对象,反复循环,现在要你输出这个数组里对象所有的属性名:

差不多就是一个树的结构。

要你编写函数方法来打印所有树及其节点上的属性名。

解决方案

function sayKeyName(obj){      
  function sayName(obj){
    if (!(obj instanceof Array) && !(obj instanceof Object)) {
       throw new TypeError('obj 类型错误!');
    }
    
    if (obj instanceof Array) {
      for (var i = 0; i < obj.length; ++i)
       {
          console.log('对象属性名:' , i);
          if (obj[i] instanceof Object) {
             sayName(obj[i]);
          }
       }
    } else {
       for (var key in obj) 
        {
          console.log('对象属性名:' , key);
          if (obj[key] instanceof Object) {
             sayName(obj[key]);
          }
        }
    }
  }
  
  sayName(obj);
}

var obj = [
   {a:
     [
       {
         b:1,
         c:[
             {d:1},
             {e:1}
           ]
        },
        {f:1}
      ]
    }
];
sayKeyName(obj);
F12查看结果...

这篇关于javascript - (面试题)js遍历复杂对象并 输出属性名!!!的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆