Vue.prototype.$listToTree = (list = [], key = 'no', parentKey = 'parentNo', fn = undefined) => {
let result = [];
list.forEach((row) => {
const one = Object.assign({}, row);
one.curLevel = 1;
result.push(one);
});
for (let i = result.length - 1; i >= 0; i--) {
let parentIndex = -1;
for (let j = 0; j < result.length; j++) {
if (result[j][key] === result[i][parentKey]) {
parentIndex = j;
break;
}
}
if (parentIndex >= 0) {
result[parentIndex].children = result[parentIndex].children || [];
result[parentIndex].children.unshift(result[i]);
result[i].curLevel = result[parentIndex].curLevel + 1;
if (typeof fn === 'function') {
fn(result[i], result[parentIndex]);
}
}
}
result = result.filter(row => row.curLevel === 1);
return result;
};
list转树
最新推荐文章于 2024-07-21 18:05:50 发布