收藏此站 联系我们 网站
当前位置:首页» 公司新闻 » 【建站服务】固始微信公众号开发【固始网络推广】固始建站、固始网站维护、固始网页制作、固始微信小程序代运营公司-域名申请

【建站服务】固始微信公众号开发【固始网络推广】固始建站、固始网站维护、固始网页制作、固始微信小程序代运营公司-域名申请

作者: 风兰 . 阅读量: 3 . 发表时间:2022-09-20 15:35:52

网站建设
​

上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。


固始微信公众号开发【固始网络推广】固始建站、固始网站维护、固始网页制作、固始微信小程序代运营公司

网站建设.jpg

固始县,河南省直管县,信阳市代管 [1]  。位于河南省东南端,豫皖两省交界处,南依大别山,北临淮河,总面积2946平方千米。截至2018年,固始县下辖3个街道、19个镇、11个乡 [2]  ,常住人口109.65万人。

因历史上有四次大规模人口南迁,固始县成为中原地区向闽台一带移民的肇始地和集中地,有“唐人故里,闽台祖地”和“中原第一侨乡”之称 [3]  。唐初“开漳圣王”陈元光、唐末“闽王”王审知、民族英雄郑成功、靖海侯施琅、爱国华侨陈嘉庚等先贤名人的祖籍地均为固始。是河南省确定的五个加快发展的区域性中心城市和十个省直管体制改革试点县之一。 [4]  2019年5月9日,经河南省级专项评估检查,固始县达到脱贫摘帽标准,正式退出贫困县序列。 [5] 

2018年,固始县地区生产总值(GDP)350.42亿元,其中,第一产业增加值73.89亿元,第二产业增加值109.43亿元,第三产业增加值167.10亿元,三次产业结构为:21.1:31.2:47.7。 [6] 


前言

将数组处理成树状结构,也是在工作中经常遇到的,今天就和大家一起分享一下思路和方法。

案例

如下代码,处理成树状结构,要求程序具有容错能力,也就是可以判断输入出错。

let haoroomsDataArr = [
  { id: 1, name: "haorooms1" },
  { id: 2, name: "haorooms2", parentId: 1 },
  { id: 4, name: "haorooms4", parentId: 3 },
  { id: 3, name: "haorooms3", parentId: 2 },
  { id: 8, name: "haorooms18", parentId: 7 },];

思路

要求处理成树状结构,那么肯定有根节点,从根节点延伸出对应的children,然后再看子节点是否有子节点。

1、首先找出根节点,没有parentId的就是根节点2、有父节点的均为子节点,根据关联的父节点,设置到一个父节点的对象数组中。3、针对同一个父节点的子节点数组,因为关联的父节点是惟一的。可以把父节点作为键,所有子节点放到键值对中。4、根据节点的id,查找以节点id为建的children数组,递归查找是否都有子节点,没有就是leaf节点,或者children为null

异常

1、父节点不存在2、无子节点(叶子节点)

代码

function getTree(arr) {
  if (!arr || !Array.isArray(arr)) return "错误的数据类型";
  var len = arr.length;
  if (!len) return "空数组";
  var rootObj = { id: null, name: null, children: [] };
  var nodeObj = {};
  for (var i = 0; i < len; i++) {
    if (!arr[i].parentId) {
      rootObj = {
        id: arr[i].id,
        name: arr[i].name,
        children: [],
      };
    } else {
      if (nodeObj.hasOwnProperty(arr[i].parentId)) {
        nodeObj[arr[i].parentId].children.push(arr[i]);
      } else {
        nodeObj[arr[i].parentId] = {};
        nodeObj[arr[i].parentId].children = [];
        nodeObj[arr[i].parentId].children.push(arr[i]);
      }
    }
  }
  function getChildren(node) {
    if (nodeObj[node.id] && nodeObj[node.id].children) {
      node.children = nodeObj[node.id].children;
      delete nodeObj[node.id];
      var len = node.children.length;
      if (len > 0) {
        for (var i = 0; i < len; i++) {
          getChildren(node.children[i]);
        }
      }
    } else {
      console.log(`${node.id}没有children`);
    }
  }
  getChildren(rootObj);

  for (var p in nodeObj) {
    if (nodeObj.hasOwnProperty) {
      console.warn(p + ":没有该父节点");
    }
  }
  return rootObj;}

方法二

const buildTree = (data, config = {}) => {
  if (!data || !Array.isArray(data)) return "错误的数据类型";
  const len = data.length;
  if (!len) return "空数组";
  const id = (config && config.id) || "id";
  const pid = (config && config.pid) || "parentId";
  const children = (config && config.children) || "children";

  // 把所有的ID映射为一个map 方便查询
  const idMap = {};
  // 找到父节点的放入 treeData
  const treeData = [];
  // 节点包含 pid 属性, 并且父节点不存在的放入 errorData
  const errorData = [];

  data.forEach((v) => {
    v && (idMap[v[id]] = v);
  });

  data.forEach((v) => {
    if (v) {
      let parent = idMap[v[pid]];
      if (parent) {
        !parent[children] && (parent[children] = []);
        parent[children].push(v || []);
      } else if (!parent && v.hasOwnProperty(pid)) {
        errorData.push(v);
      } else {
        treeData.push(v);
      }
    }
  });
  // 树结构 错误数据同时返回
  // return {
  //   treeData,
  //   errorData
  // }
  // 只返回树结构
  return treeData;};


固始微信公众号开发【固始网络推广】固始建站、固始网站维护、固始网页制作、固始微信小程序代运营公司


上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


关键词:网站建设,企业网站,网站制作,网页设计,高端网站建设,企业网站制作,网页制作,制作网站,网站设计,高端网页设计,高端网站设计,做网站,自适应网站

全国服务热线
18114747181
二维码
手机端二维码
上往建站
地址:全国各地都有驻点商务 |  网站建设:上往建站
在线咨询QQ:1120768800
 
QQ在线咨询
售前咨询热线
18114747181
营销顾问
营销顾问
售后服务热线
400-000-1116
售后服务
售后服务