树形数据转换

1、树形数据转数组

 const recursion = (arr, num) => {
  arr.forEach((ele) => {
    // 判断有子元素,并且子元素的长度大于0就再次调用自身
    if (ele.children && ele.children.length > 0) {
      // var node_root = ele.children.filter((item) => item.basicData == 3);
      for (let k = 0; k < ele.children.length; k++) {
        if (ele.children[k].basicData == 3) {
          data.rootAllNode.push({
            nodeId: ele.children[k].id,
            context: ele.children[k].title,
            parentId: ele.children[k].parentId,
            basicData: ele.children[k].basicData,
            checkArr: "1",
            checked: "1",
            disabled: true,
          });
        } else if (ele.children[k].basicData == 2) {
          data.parentAllNode.push({
            nodeId: ele.children[k].id,
            context: ele.children[k].title,
            parentId: 1,
            basicData: ele.children[k].basicData,
            checkArr: "1",
            checked: "1",
            disabled: true,
          });
        }
      }
      recursion(ele.children, num);
    }
  });
};

2、数组转树形数据

const toTree = (data) => {
  let result = [];

  if (!Array.isArray(data)) {
    return result;
  }
  data.forEach((item) => {
    delete item.children;
  });
  let map = {};
  data.forEach((item) => {
    map[item.nodeId] = item;
  });
  data.forEach((item) => {
    let parent = map[item.parentId];
    if (parent) {
      (parent.children || (parent.children = [])).push(item);
    } else {
      result.push(item);
    }
  });

  return result;
};

你可能感兴趣的:(javascript)