joken-前端工程师

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: :: 管理 ::

要将一个嵌套对象拍平为 {a.b.c: []} 这种格式,可以使用递归方法遍历对象的每一层,并在最终层级构建平坦的键值对。以下是实现这一功能的示例代码:

function flattenObject(obj, parentKey = '', result = {}) {
    for (let key in obj) {
        const fullKey = parentKey ? `${parentKey}.${key}` : key;

        if (Array.isArray(obj[key])) {
            result[fullKey] = obj[key];
        } else if (typeof obj[key] === 'object') {
            flattenObject(obj[key], fullKey, result);
        }
    }
    return result;
}

// 示例对象
let nestedObject = {
    group1: {
        subgroup1: {
            array: [1, 2, 3]
        },
        subgroup2: {
            array: [4, 5]
        }
    },
    group2: {
        array: [6, 7]
    }
};

let flattenedObject = flattenObject(nestedObject);
console.log(flattenedObject);
// 输出: { 'group1.subgroup1.array': [ 1, 2, 3 ], 'group1.subgroup2.array': [ 4, 5 ], 'group2.array': [ 6, 7 ] }

这个 flattenObject 函数使用递归方法遍历对象的每一层,构建平坦的键值对。在每次递归调用时,会检查当前属性值是否是数组,如果是数组,则直接将其添加到结果对象中。如果是对象,则继续递归处理。最终,所有嵌套对象将被拍平为 {a.b.c: []} 格式。

posted on 2024-07-27 11:41  joken1310  阅读(72)  评论(0)    收藏  举报