实现目标表:
一个对象数组data,能够指定分层的属性,返回一个tree结构
实现辅助工具:lodash
实现注意:
递归实现,需要处理好递归函数的返回值(第一层、第二层...);注意先实现层与层之间的处理逻辑,最后在处理端点结束条件
实现代码如下:
// 原始对象数组
const data = [
{
equipmentPId: '一级分类id1',
equipmentPName: '一级分类name1',
equipmentId: '二级分类id1',
equipmentName: '二级分类name1'
},
{
equipmentPId: '一级分类id1',
equipmentPName: '一级分类name1',
equipmentId: '二级分类id2',
equipmentName: '二级分类name2'
},
{
equipmentPId: '一级分类id3',
equipmentPName: '一级分类name3',
equipmentId: '二级分类id1',
equipmentName: '二级分类name1'
},{
equipmentPId: '一级分类id1',
equipmentPName: '一级分类name1',
equipmentId: '二级分类id3',
equipmentName: '二级分类name3'
}
];
// 定义入参层级tag数组,指明分层依据字段
const nodesTag = [{key: 'equipmentPId', label: 'equipmentPName'}, {key: 'equipmentId', label: 'equipmentName'}];
// 递归实现
function buildTreeNodes(data, nodesTag) {
const res = [];
if (nodesTag.length > 0) {
// 指定最外层数据结构
const childrenNodes = _.groupBy(data, _.get(nodesTag, [0]).key);
_.forEach(childrenNodes, (item, key) => {
const param = {
key: key,
label: _.get(item,[0])[nodesTag[0].label],
// 递归实现第二层
children: buildTreeNodes(item, _.slice(nodesTag, 1))
};
res.push(param);
})
}
return res;
}
// 调用buildTreeNodes递归函数
buildTreeNodes(data, nodesTag);
文章讲述了如何利用lodash库,根据给定的属性标签对一个对象数组进行分层处理,构建出树形结构。递归函数首先处理最外层,然后逐层深入,直到所有层级都被处理,最终形成一个完整的树结构数据。
1万+

被折叠的 条评论
为什么被折叠?



