对象扁平化函数 效果如图
其思路类似于深拷贝 都运用了递归的方式 不同在于需要记录其父亲的名字
代码如下
function falt(obj) {
let newobj = {}
function recurrence(obj, father) {
for (let key in obj) {
if (typeof obj[key] === 'object') {
if (!father) {
recurrence(obj[key], key)
} else {
if (Array.isArray(obj)) {
recurrence(obj[key], father + '[' + key + ']')
} else {
recurrence(obj[key], father + '.' + key)
}
}
} else {
if (!father) {
newobj[key] = obj[key]
} else {
if (Array.isArray(obj)) {
newobj[father + '[' + key + ']'] = obj[key]
} else {
newobj[father + '.' + key] = obj[key]
}
}
}
}
}
recurrence(obj,null)
return newobj
}