js简单易懂实现数组转树状结构

62 阅读1分钟
const arrayData = [
  { id: 2, title: '中国', parent_id: 0 },
  { id: 3, title: '广东省', parent_id: 2 },
  { id: 4, title: '广州市', parent_id: 3 },
  { id: 5, title: '天河区', parent_id: 4 },
  { id: 6, title: '湖南省', parent_id: 2 },
  { id: 1, title: '俄罗斯', parent_id: 0 }
]
function translationDataToTree(data){
  let treeObject = data.reduce((pre,cur) => {
    pre[cur.id] = cur;
    return  pre
  },{})
  let treeArr = [];
  for(let i = 0;i<data.length;i++){
    if(data[i].parent_id === 0){
      treeArr.push(data[i]);
      continue;
    }
    if(data[i].parent_id in treeObject){
      let parent = treeObject[data[i].parent_id];
      parent.children = parent.children || [];
      parent.children.push(data[i])
    }
  }
  return treeArr
}
let treeObj = translationDataToTree(arrayData);