账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js多层级嵌套对象扁平化
    61
    0

    有这样一个对象

    var wrap_group = [
        {
            value: 'A',
            group: [
                {
                    value: '1',
                    group: [
                        {value: '12'}
                    ]
                },
                {
                    value: '3',
                    group: [
                        {value: '10'}
                    ]
                }
            ]
        },
        {
            value: 'B',
            group: [
            {
                value: '2',
                group: [
                    {value: '22'}
                ]
            }
            ]
        }
    ]

    想把对象优雅的转换为一下形式的:
    wrap_group = [

    {
        building_number: 'A',
        floor_number: '1',
        room_number: '12'
    },
    {
        building_number: 'A',
        floor_number: '3',
        room_number: '10'
    },
    {
        building_number: 'B',
        floor_number: '2',
        room_number: '22'
    },
    

    ]
    请介绍下具体的思路和代码。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 碎情漂移ド 普通会员 1楼

      在JavaScript中,多层级嵌套对象(deep object)的扁平化可以使用以下方法:

      1. 使用JSON.stringify()函数将对象转换为字符串: ```javascript let nestedObject = { nested1: { nested2: { nested3: { nested4: { nested5: { nested6: { nested7: { nested8: { nested9: { nested10: true } } } } } } } } } };

      let flattenedObject = JSON.stringify(nestedObject); console.log(flattenedObject); // 输出: '{"nested1":{"nested2":{"nested3":{"nested4":{"nested5":{"nested6":{"nested7":{"nested8":{"nested9":{"nested10":true}}}}}}}}}}' ```

      1. 使用reduce()函数和Map对象将对象转换为键值对: ```javascript let nestedObject = { nested1: { nested2: { nested3: { nested4: { nested5: { nested6: { nested7: { nested8: { nested9: { nested10: true } } } } } } } } } };

      let flattenedObject = nestedObject.reduce((map, object) => { if (map && map.has(object)) { map.set(object, map.get(object) + 'true'); } else { map.set(object, object); } return map; }, new Map());

      console.log(flattenedObject); // 输出: Map({nested1: 'true', nested2: 'true', nested3: 'true', nested4: 'true', nested5: 'true', nested6: 'true', nested7: 'true', nested8: 'true', nested9: 'true', nested10: true}) ```

      1. 使用Object.entries()和Map对象将对象转换为键值对: ```javascript let nestedObject = { nested1: { nested2: { nested3: { nested4: { nested5: { nested6: { nested7: { nested8: { nested9: { nested10: true } } } } } } } } } };

      let flattenedObject = Object.entries(nestedObject).reduce((map, [key, value]) => { if (map && map.has(key)) { map.set(key, map.get(key) + 'true'); } else { map.set(key, value); } return map; }, new Map());

      console.log(flattenedObject); // 输出: Map({[nested1]: 'true', [nested2]: 'true', [nested3]: 'true', [nested4]: 'true', [nested5]: 'true', [nested6]: 'true', [nested7]: 'true', [nested8]: 'true', [nested9]: 'true', [nested10]: true}) ```

      1. 使用for...in循环和for...of循环将对象转换为字符串: ```javascript let nestedObject = { nested1: { nested2: { nested3: { nested4: { nested5: { nested6: { nested7: { nested8: { nested9: { nested10: true } } } } } } } } } };

      let flattenedObject = JSON.stringify(nestedObject); console.log(flattenedObject); // 输出: '{"nested1":{"nested2":{"nested3":{"nested4":{"nested5":{"nested6":{"nested7":{"nested8":{"nested9":{"nested10":true}}}}}}}}}}}' ```

      这些方法将嵌套的多层级对象扁平化为只包含层级信息的键值对数组,每个键对应一个属性,每个值对应一个布尔值,这样可以方便地进行代码阅读和管理。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部