对象数据扁平化处理

57 阅读1分钟

“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第1篇文章,点击查看活动详情

const obj1 = {
    a: 1,
    b: {
        f: '2',
        g: '3',
    },
    c: {
        d: [
            1,
            2,
            {
                e: true,
            },
        ],
    },
}

将以上数据转成以下数据格式

const  obj2 = {
  a: 1,
  'b.f': '2',
  'b.g': '3',
  'c.d.0': 1,
  'c.d.1': 2,
  'c.d.2.e': true
}

转换代码

let result = {}
let comType = ['object', 'array']

function plat(obj, prekey, resobj) {
    prekey = prekey ? prekey + '.' : ''
    let keys = Object.keys(obj)
    keys.forEach((item) => {
        let val = obj[item]
        let type = typeof val
        if (comType.indexOf(type) != -1 && val) {
            plat(val, prekey + item, resobj)
        } else {
            if (val !== null && val !== undefined) {
                resobj[prekey + item] = val
            }
        }
    })
}
plat(obj1, '', result)