将对象的平面数组转换为对象的嵌套数组可以通过以下步骤实现:
这样,平面数组中的对象就会根据其父对象的ID被正确地嵌套到对应的子对象数组中。
以下是一个示例代码(使用JavaScript):
function convertToNestedArray(flatArray) {
const nestedArray = [];
const idToObjMap = {};
// 创建对象的ID到对象的映射
flatArray.forEach(obj => {
idToObjMap[obj.id] = obj;
});
// 遍历平面数组中的每个对象
flatArray.forEach(obj => {
const parentId = obj.parentId;
// 如果父对象的ID存在,则将当前对象添加到父对象的子对象数组中
if (parentId) {
const parentObj = idToObjMap[parentId];
if (parentObj) {
if (!parentObj.children) {
parentObj.children = [];
}
parentObj.children.push(obj);
}
} else {
// 如果父对象的ID不存在,则将当前对象作为顶级对象添加到最终的嵌套数组中
nestedArray.push(obj);
}
});
return nestedArray;
}
// 示例用法
const flatArray = [
{ id: 1, name: 'Object 1', parentId: null },
{ id: 2, name: 'Object 2', parentId: 1 },
{ id: 3, name: 'Object 3', parentId: 1 },
{ id: 4, name: 'Object 4', parentId: 2 },
{ id: 5, name: 'Object 5', parentId: 3 },
];
const nestedArray = convertToNestedArray(flatArray);
console.log(nestedArray);
这个示例代码将会输出以下结果:
[
{
id: 1,
name: 'Object 1',
parentId: null,
children: [
{
id: 2,
name: 'Object 2',
parentId: 1,
children: [
{
id: 4,
name: 'Object 4',
parentId: 2,
children: []
}
]
},
{
id: 3,
name: 'Object 3',
parentId: 1,
children: [
{
id: 5,
name: 'Object 5',
parentId: 3,
children: []
}
]
}
]
}
]
这样,平面数组中的对象就被正确地转换为了嵌套数组的形式。
领取专属 10元无门槛券
手把手带您无忧上云