以下是一个示例代码,展示了如何按照父字段的层次结构组织数组:
function organizeArrayByParentField(arr, parentField) {
// 创建一个空对象,用于存储每个父字段的子元素
const organizedObj = {};
// 遍历数组中的每个元素
arr.forEach(item => {
// 获取当前元素的父字段的值
const parentValue = item[parentField];
// 如果 organizedObj 中不存在当前父字段的键,则创建一个空数组作为值
if (!organizedObj.hasOwnProperty(parentValue)) {
organizedObj[parentValue] = [];
}
// 将当前元素添加到对应父字段的数组中
organizedObj[parentValue].push(item);
});
// 将 organizedObj 转换为数组形式,以便于返回
const organizedArr = Object.values(organizedObj);
return organizedArr;
}
// 示例用法
const arr = [
{ id: 1, parent: null, name: 'Parent 1' },
{ id: 2, parent: 1, name: 'Child 1.1' },
{ id: 3, parent: 1, name: 'Child 1.2' },
{ id: 4, parent: 2, name: 'Grandchild 1.1.1' },
{ id: 5, parent: null, name: 'Parent 2' },
{ id: 6, parent: 5, name: 'Child 2.1' },
];
const organizedArr = organizeArrayByParentField(arr, 'parent');
console.log(organizedArr);
上述代码将根据给定的父字段(在此示例中为 'parent')对数组进行组织,并返回一个包含按照父字段层次结构组织的数组。在示例用法中,它将打印以下输出:
[
[
{ id: 1, parent: null, name: 'Parent 1' },
{ id: 2, parent: 1, name: 'Child 1.1' },
{ id: 3, parent: 1, name: 'Child 1.2' },
{ id: 4, parent: 2, name: 'Grandchild 1.1.1' }
],
[
{ id: 5, parent: null, name: 'Parent 2' },
{ id: 6, parent: 5, name: 'Child 2.1' }
]
]
第一个元素是所有父字段为 null 的元素,第二个元素是所有父字段为 5 的元素。
上一篇:按照辅助ID对SQL进行类型筛选
下一篇:按照父子关系对行进行排序