JS数据的扁平化处理
在JavaScript中,可以使用递归函数来实现数据的扁平化处理。以下是一个简单的例子,展示了如何将嵌套的对象转换为扁平化的键值对数组。
function flattenObject(obj, prefix = '') {
return Object.keys(obj).reduce((acc, key) => {
const propName = prefix ? `${prefix}.${key}` : key;
const value = obj[key];
if (value && typeof value === 'object') {
// 递归嵌套对象
acc.push(...flattenObject(value, propName));
} else {
// 非对象类型,直接添加到结果数组
acc.push({ [propName]: value });
}
return acc;
}, []);
}
// 使用示例
const nestedObj = { a: { b: { c: 1, d: { e: 2 } }, f: { g: 3 } } };
const flatArray = flattenObject(nestedObj);
console.log(flatArray); // [ { 'a.b.c': 1 }, { 'a.b.d.e': 2 }, { 'a.f.g': 3 } ]
这个函数通过递归遍历对象的每一个属性,如果遇到非基本类型值(如对象),它会继续递归下去,并在每一级的键前加上前缀。如果遇到基本类型值,它会创建一个包含键值对的对象并将其加入结果数组。最终返回的是一个扁平化的键值对数组。
评论已关闭