实现一个方法 flat(obj) 将下面对象做扁平化处理,输出如下
let obj = {
a: {
b: 1,
c: 2,
d: { e: 5 }
},
b: [1, 3, { a: 2, b: 3 }],
c: 3
}
/*
{
a.b: 1
a.c: 2
a.d.e: 5
b.0: 1
b.1: 3
b.2.a: 2
b.2.b: 3
c: 3
}
*/
递归的代码实现
function flat(obj) {
// 你的代码
const back = {};
recursion(obj, null);
function recursion(o, prev) {
for (let key in o) {
if (o[key] instanceof Object) {
if (prev === null) {
recursion(o[key], key);
} else {
recursion(o[key], prev + '.' + key);
};
} else {
if (prev === null) {
back[key] = o[key];
} else {
back[prev + '.' + key] = o[key];
};
};
};
};
console.log(back);
return back;
};
// 最终效果是执行
flat({
a: {
b: 1,
c: 2,
d: { e: 5 }
},
b: [1, 3, { a: 2, b: 3 }],
c: 3
})