一 对象扁平化

    /* 题⽬*/
    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'
    }
    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)