将数组转换为树状对象(父子对象) [英] Covert a Array to a Tree Like Object (Parent child)

查看:56
本文介绍了将数组转换为树状对象(父子对象)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含这种类型对象的数组.-->

I have a array with this type object. -->

并希望在带有父子逻辑的 html 树中显示

and want to show in a html tree with parent child logic

    { 
      children: [
         {
           children: [ { label : "sonali"} ],
           label: "anil",
         }
           ],
   label: "santanu"
}

或者这里有一张图片供参考 -- >

or here's a image for Reference -- >

我还提供了一个 json 字符串数据(只是粘贴链接),我有数据供参考,请解析 json 以将其放入 js 数组中.

also i am providing a json string data (justpaste link) where i have data for reference , please parse the json to get it in js array.

json 字符串链接(justpaste)

谢谢

推荐答案

使用 Map 来存储对象引用的位置.

Use a Map to store location of object reference.

let data = [{ Member_ID: 1, Member_Name: "santanu", Intro_Member_ID: 0, Intro_Member_Name: "" }, { Member_ID: 2, Member_Name: "anil", Intro_Member_ID: 1, Intro_Member_Name: "santanu" }, { Member_ID: 3, Member_Name: "antu", Intro_Member_ID: 1, Intro_Member_Name: "santanu" }, { Member_ID: 4, Member_Name: "sonali", Intro_Member_ID: 2, Intro_Member_Name: "anil" }, { Member_ID: 5, Member_Name: "debabrata", Intro_Member_ID: 3, Intro_Member_Name: "antu" }, { Member_ID: 6, Member_Name: "sankha", Intro_Member_ID: 0, Intro_Member_Name: "" }, { Member_ID: 7, Member_Name: "shraboni", Intro_Member_ID: 6, Intro_Member_Name: "sankha" }];

let map = new Map, result = [];

for (const item of data) {
    let label = item.Member_Name, node = { label },
        parentNode = map.get(item.Intro_Member_Name);

    if (parentNode) {
        parentNode.children ??= [];
        parentNode.children.push(node)
    }
    else result.push(node);
    map.set(label, node)
}
console.log(result)

这篇关于将数组转换为树状对象(父子对象)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆