对数组进行树状结构输出(JS)

// 还原函数
export function treeFormat(sNodes) {
  var i, l,
    key = "code";
  var parentKey = "parentCode";
  var childKey = "children";
  var text = "codeName";
  if (!key || key == "" || !sNodes) return [];
  if (isArray(sNodes)) {
    var r = [];
    var tmpMap = [];
    for (i = 0, l = sNodes.length; i < l; i++) {
      sNodes[i]["title"] = sNodes[i][text];
      tmpMap[sNodes[i][key]] = sNodes[i];
    }
    for (i = 0, l = sNodes.length; i < l; i++) {
      if (tmpMap[sNodes[i][parentKey]] && sNodes[i][key] != sNodes[i][parentKey]) {
        if (!tmpMap[sNodes[i][parentKey]][childKey]) {
          tmpMap[sNodes[i][parentKey]][childKey] = [];
        }
        tmpMap[sNodes[i][parentKey]][childKey].push(sNodes[i]);
      } else {
        r.push(sNodes[i]);
      }
    }
    return mapCate1ToOptions(r);
  }
  return sNodes;
}

export function isEmptyObject(e) {
  var t;
  for (t in e)
    return !1;
  return !0
}

function isArray(arr) {
  return Object.prototype.toString.apply(arr) === "[object Array]";
}

function mapCate1ToOptions(categorys) {
  return categorys && categorys.map((category) => {
      return Object.assign({}, {
        title: category.codeName,
        value: category.code,
        key:category.code,
        isLeaf: false,
        children: getChildCategorys(category)
      });
    }
  )
}

function getChildCategorys(categoryCur) {
  return categoryCur.children && categoryCur.children.map((category) => {
    return Object.assign({}, {
      title: category.codeName,
      value: category.code,
      key: category.code,
      isLeaf: category.children ? false : true,
      children: category.children ? getChildCategorys(category) : null
    });
  });
}

猜你喜欢

转载自blog.csdn.net/u012889214/article/details/80693486