从对象的平面数组创建对象的嵌套数组可以通过以下步骤实现:
以下是一个示例代码,演示如何从对象的平面数组创建对象的嵌套数组:
function createNestedArray(objects) {
const nestedArray = [];
// 创建一个映射,用于快速查找对象
const objectMap = {};
// 遍历平面数组,将每个对象添加到映射中
for (const obj of objects) {
objectMap[obj.id] = obj;
}
// 遍历平面数组,构建嵌套数组
for (const obj of objects) {
if (obj.parentId) {
// 如果对象有父级对象,则将其添加到父级对象的嵌套数组中
const parentObj = objectMap[obj.parentId];
if (parentObj) {
parentObj.children = parentObj.children || [];
parentObj.children.push(obj);
}
} else {
// 如果对象没有父级对象,则将其添加到最终的嵌套数组中
nestedArray.push(obj);
}
}
return nestedArray;
}
// 示例用法
const objects = [
{ id: 1, name: 'A' },
{ id: 2, name: 'B', parentId: 1 },
{ id: 3, name: 'C', parentId: 1 },
{ id: 4, name: 'D', parentId: 2 },
{ id: 5, name: 'E', parentId: 2 },
{ id: 6, name: 'F', parentId: 3 },
];
const nestedArray = createNestedArray(objects);
console.log(nestedArray);
这段代码将根据对象的id
和parentId
属性创建一个嵌套数组。在示例中,对象A
是顶级对象,对象B
和C
是A
的子对象,对象D
和E
是B
的子对象,对象F
是C
的子对象。最终的嵌套数组将按照这种层次结构进行组织。
这是一个简单的示例,实际应用中可能需要根据具体的需求进行适当的修改和扩展。
领取专属 10元无门槛券
手把手带您无忧上云