javascript - (面试题)js遍历复杂对象并 输出属性名!!!
本文介绍了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屋!
查看全文