一 对象扁平化
JS
/* 题⽬*/
var entryObj = {
a: {
b: {
c: {
dd: 'abcdd'
}
},
d: {
xx: 'adxx'
},
e: 'ae'
}
}
// 要求转换成如下对象
var outputObj = {
'a.b.c.dd': 'abcdd',
'a.d.xx': 'adxx',
'a.e': 'ae'
}
JS
let flatten = (myObj) => {
debugger
const flatObj = {}
let flag = null
function formatKey(obj, keyName) {
for (let key in obj) {
if (typeof obj[key] === 'object' && obj[key] !== null) {
if (!keyName) {
formatKey(obj[key], key)
} else {
if (Array.isArray(obj)) {
formatKey(obj[key], `${keyName}[${key}]`)
} else {
formatKey(obj[key], `${keyName}.${key}`)
}
}
} else {
//值不是对象 或者是 null
if (!keyName) {
flatObj[key] = obj[key]
} else {
if (Array.isArray(obj)) {
flatObj[`${keyName}[${key}]`] = obj[key]
} else {
flatObj[`${keyName}.${key}`] = obj[key]
}
}
}
}
}
formatKey(myObj, flag)
return flatObj
}
let result = flatten(entryObj)
console.log('🚀 ~~- result:', result)