const obj = {
a: {
b: 1,
c: 2,
d: {e: 5}
},
b: [1, 3, {a: 2, b: 3}],
c: 3
}
flatten(obj) 结果返回如下
*/
function isObject(val) {
return typeof val === 'object' && val !== null;
}
function flatten(obj) {
if (!isObject(obj)) return
let result = {}
function dfs (cur, preFix) {
if (isObject(cur)) {
if (Array.isArray(cur)) {
cur.forEach((item, index) => {
dfs(item, `${preFix}[${index}]`)
})
} else {
for (let i in cur) {
dfs(cur[i], `${preFix}${preFix ? '.' : ''}${i}`)
}
}
} else {
result[preFix] = cur
}
}
dfs(obj, '')
return result
}
flatten(obj)