do-element
Version:
Secondary encapsulation of basic element-ui
41 lines (34 loc) • 805 B
JavaScript
const defaultProps = { id: 'id', pid: 'pid', children: 'children' };
// 数组转tree
export function arrayToTree(items, props = defaultProps) {
props.id = props.id || 'id';
props.pid = props.pid || 'pid';
props.children = props.children || 'children';
const result = []; // 存放结果集
const itemMap = {};
for (const item of items) {
const id = item[props.id];
const pid = item[props.pid];
if (!itemMap[id]) {
itemMap[id] = {
[]: [],
};
}
itemMap[id] = {
...item,
[]: itemMap[id][props.children],
};
const treeItem = itemMap[id];
if (!pid) {
result.push(treeItem);
} else {
if (!itemMap[pid]) {
itemMap[id] = {
[]: [],
};
}
itemMap[pid].children.push(treeItem);
}
}
return result;
}