美文网首页让前端飞前端开发
关系数据改为嵌套数据

关系数据改为嵌套数据

作者: _月光临海 | 来源:发表于2019-03-12 20:20 被阅读3次

需求

依据 idparentId 构造父子集关系,将子数据放到父数据的 child 字段中


思路

  • 利用 Array 是引用类型值的特点。
    例如 A,B,C 均为 { child : [] },依次进行如下操作
    1、A.child.push(B)
    2、B.child.push(C)
    此时 A 中的 B 也已经包含了 C
  • 再利用 filter非根数据 去除

数据源

let data: [
    { id: 1, text: "1", parentId: 0 },
    { id: 2, text: "2", parentId: 0 },
    { id: 3, text: "1-3", parentId: 1 },
    { id: 4, text: "1-3-4", parentId: 3 },
    { id: 5, text: "2-5", parentId: 2 },
    { id: 6, text: "1-3-6", parentId: 3 }
]

方法:

function flat2Tree(
  data,
  id = "id",
  pId = "parentId",
  childKey = "child",
  condition = 0
) {
  data.map(it => {
    if (it[pId] !== condition) {
      data.map(obj => {
        if (obj[id] === it[pId]) {
          if (!obj[childKey]) obj[childKey] = [];
          obj[childKey].push(it);
        }
      });
    }
  });
  return data.filter(it => it[pId] === 0);
}

使用

let newData = flat2Tree(data)

结果

相关文章

  • 关系数据改为嵌套数据

    需求 依据 id 与 parentId 构造父子集关系,将子数据放到父数据的 child 字段中 思路 利用 Ar...

  • Xml-DTD和Schema

    定义:XML是一种数据传输和存储格式,用标签保存数据内容,利用标签嵌套关系保存数据之间关系应用场景:不同平台间数据...

  • .ajax()请求json数据,并处理,注入echart表格

    需要注意:echart数据写在success函数里面,嵌套关系搞清楚。

  • ajax踩坑

    嵌套使用如果嵌套的ajax请求的数据有依赖关系,同步执行会导致错误出现。 使用上述选项避免嵌套的同时执行。

  • 1java基础知识

    1. jvm jre jdk 嵌套关系 2.数据类型 引用数据类型 简单数据类型字节布尔... 3.驼峰命名法 开...

  • object对象替换键名

    需求 需要将如data(不知道会嵌套几层)中的数据结构中的‘children’改为‘child’,即变成data2...

  • Python基础-08数据嵌套

    8.数据嵌套     在Python中,各种数据是可以相互嵌套的,如列表中嵌套元组、整型、字典等,字典中也可以嵌套...

  • 2018-09-10复习

    一的关系,association嵌套结果,使用多表查询语句。resultMap,绑定数据,多表查询就ok多的关系,...

  • allocation经验_elasticsearch_clust

    背景: 某数据节点的磁盘告警,将该数据节点改为master节点,将磁盘空闲的master节点改为数据节点。 操作:...

  • mongo 数据库操作

    嵌套数组里的成员操作 删除嵌套数组里的成员数据 数据源: {"_id" : "777","someKey" : "...

网友评论

    本文标题:关系数据改为嵌套数据

    本文链接:https://www.haomeiwen.com/subject/ltkopqtx.html