要将一个嵌套对象拍平为 {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: []}
格式。