我需要一些帮助来从 mongoDB 的原始 json 数据创建图形或树结构,并且数据点与父子相关。我尝试创建一些代码来制作数据结构并漂亮地打印它,但它仍然有重复的行。任何人都可以修复我的代码,以便不再重复吗?
数据点:
[
{
"_id": {
"$oid": "577048a0a5f4970b59493861"
},
"children": [
{
"$oid": "5914d7528ed1755954d6e88f"
},
{
"$oid": "56675f1446e0324b4566f6e9"
},
{
"$oid": "5924f500381e3b5854db8a0c"
},
{
"$oid": "5cc64fadcf995a1d6b54e745"
},
{
"$oid": "5d71b5f49a311e6fd587e3dc"
},
{
"$oid": "599646b5bd0b9864d8e7391d"
},
{
"$oid": "5850ae570b242ff1782ea07c"
},
{
"$oid": "58e9a01f33d3f1f208e032de"
},
{
"$oid": "5546db39dbeafcef63e6efb6"
},
{
"$oid": "5fbdad479a311e6fd58812ff"
},
{
"$oid": "5cabd38142524178c66be1f1"
},
{
"$oid": "5491ddb3d707d710141027c2"
},
{
"$oid": "5d66f0109a311e6fd587e12c"
},
{
"$oid": "56ef0296a7b280e91b475aeb"
},
{
"$oid": "5cd4dabce84cdd76faaf597f"
},
{
"$oid": "58e43b26f79ce47642fae5c4"
},
{
"$oid": "58252929332df05c01c1624f"
},
{
"$oid": "55dfd7d2bb58034a69d563fe"
},
{
"$oid": "56ef03976e418ae84779d827"
},
{
"$oid": "5491dd8bd707d710141027c1"
},
{
"$oid": "5ba2eb071e910a58acf98e3f"
},
{
"$oid": "5cf580fb87823d36e74808bf"
},
{
"$oid": "5dae373a3c6e806fd3bbb1fc"
},
{
"$oid": "61c3a8bf3824dd48d99ab572"
},
{
"$oid": "5a2f468069d12b0a0f4cc68e"
},
{
"$oid": "5be8de44c052dc326ab1e810"
},
{
"$oid": "5c98455267dcef531cbc44f6"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5835f65457eea2852d2bf48c"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5924f500381e3b5854db8a0c"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "56ef03976e418ae84779d827"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "59c87107cdfaa27f5759b107"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5a24977405bdd758991bdb93"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "55aef43d03d4ad2343c2e27f"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "56d382a0589377c94614cbbc"
},
"children": [
{
"$oid": "5cdb32901d30d576fe946d44"
},
{
"$oid": "5a53e1ac23090e4877973532"
},
{
"$oid": "613e86c24faf093afab2c0ea"
},
{
"$oid": "62eb0a4456bdf04c7768843c"
},
{
"$oid": "5a53ddb8159e7944e0b44795"
},
{
"$oid": "606e58ad2f2af36f2219bcc8"
},
{
"$oid": "628da1ce238868408a576c22"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "592776bc8ed1755954d6e8d5"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "594c8252381e3b5854db8af7"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "59503126381e3b5854db8afc"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "58e43b26f79ce47642fae5c4"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "59644a45442b1e826dd7cdac"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5965a855b3e775836dfd8d5b"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "599646b5bd0b9864d8e7391d"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "59965edbf39ca264d9dd41ca"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "58ddc042f67c5f75420cc403"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5914d7528ed1755954d6e88f"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5a53e1ac23090e4877973532"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5aaf190e159e7944e0b44fe1"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5b15c4adee10e503a6a6d757"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "55c8024609c8cb2176ba55da"
},
"children": [
{
"$oid": "581bbdfbf0df7f680817970b"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5491dd7ed707d710141027c0"
},
"children": [
{
"$oid": "5d54d4fc5937ee123ad60c9d"
},
{
"$oid": "5cb7ef9281c9d71d6a82843f"
},
{
"$oid": "5d59c4efa0e40d1239ec5e14"
},
{
"$oid": "5cf707cde5dbb949ad5cc302"
},
{
"$oid": "5d54bd25a0e40d1239ec5d9c"
},
{
"$oid": "5c1a9ae870c07e201b3a4880"
},
{
"$oid": "5c0ec151a9b73222dfdd82d6"
},
{
"$oid": "5de70b4f9a311e6fd587f4e9"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "581bbdfbf0df7f680817970b"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5850ae570b242ff1782ea07c"
},
"children": [
{
"$oid": "5cd4dabce84cdd76faaf597f"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "54fe27cf5c25b1394be6b303"
},
"children": [
{
"$oid": "6241210f7210ae3af7727813"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "58252929332df05c01c1624f"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5b57b20e8fff7b28249879ae"
},
"children": [
{
"$oid": "5d01cc1787e6383735ed12a6"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5988de44d4978b0596152387"
},
"children": [
{
"$oid": "5d06bcaaefa930373488e7c0"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5ad6ca76159e7944e0b45553"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5b15e2dd5240347c64223fed"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "56675f1446e0324b4566f6e9"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5a0223cc285a000c2866565c"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5491dfa5d707d710141027cb"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5491ddb3d707d710141027c2"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "555560f0ab95c2765d65c3cd"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "55dfd7d2bb58034a69d563fe"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "55cd503216db9f1c385a69db"
},
"children": [
{
"$oid": "5f4f019d0e170b6f23370b53"
},
{
"$oid": "5a0223cc285a000c2866565c"
},
{
"$oid": "5f6175683c6e806fd3bbcef7"
},
{
"$oid": "6289c9d0adb2f54c79e239d4"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5a8211ad159e7944e0b44b67"
},
"children": [
{
"$oid": "5d82a7063c6e806fd3bbaa37"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5491dd8bd707d710141027c1"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5771fda4d0c907f02785022a"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "57391e8ec1d461090ef7397d"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5a53ddb8159e7944e0b44795"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5af905d15240347c64223af3"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5b6cd1aff6056722483d49f2"
},
"children": [
{
"$oid": "5d531e95ff66e07233a2bf76"
},
{
"$oid": "5d5475e993b2f3707a737d40"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5702f5161c852788280926f3"
},
"children": [
{
"$oid": "5f0b9d810e170b6f2337073d"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5a0dfc4894ba750156a47e9c"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "58e9a01f33d3f1f208e032de"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5a2472d6f6b76456d074f761"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5a2f468069d12b0a0f4cc68e"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5b4e5a958fff7b2824987846"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5546db39dbeafcef63e6efb6"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "56ef0296a7b280e91b475aeb"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "57ce00596dfb923915cf9a7f"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5a24b30df6b76456d074f7c4"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5ba2eb071e910a58acf98e3f"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5be8de44c052dc326ab1e810"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5be9cc9c20a38c39bc4c807b"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5be9d2553863d639bbface86"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5c075bd666a1c95d2acc6a3f"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5c083f19d011855d2b41d458"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5c0ec151a9b73222dfdd82d6"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5c1a9ae870c07e201b3a4880"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5c3bd69f70c07e201b3a4a99"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5c5cd18745f41e78ebfb0732"
},
"children": [
{
"$oid": "5c5cd1a31279d46f7d90a186"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5c5cd1a31279d46f7d90a186"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5c609d8686e12578ea359383"
},
"children": [
{
"$oid": "5d531e95ff66e07233a2bf76"
},
{
"$oid": "5b6cd1aff6056722483d49f2"
},
{
"$oid": "5d5475e993b2f3707a737d40"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5c64ccb086e12578ea359499"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5c85a3b56ce63b531de0eaef"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5c98455267dcef531cbc44f6"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5caabb5bc8bbd278c0392dab"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5cabd38142524178c66be1f1"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5cb7ef9281c9d71d6a82843f"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5cc64fadcf995a1d6b54e745"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5cc659bc17629e20e1a66f40"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5cd4dabce84cdd76faaf597f"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5cdb32901d30d576fe946d44"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5cedbb5e87823d36e7480823"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5cf580fb87823d36e74808bf"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d01919b90347136e8e233e0"
},
"children": [
{
"$oid": "5d0191dc87823d36e7480ab6"
},
{
"$oid": "5d898e340e170b6f2336e8f0"
},
{
"$oid": "5d898fc83c6e806fd3bbab51"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d0191dc87823d36e7480ab6"
},
"children": [
{
"$oid": "5d898e340e170b6f2336e8f0"
},
{
"$oid": "5d898fc83c6e806fd3bbab51"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d01cc1787e6383735ed12a6"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d06bcaaefa930373488e7c0"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d1534be2b4549192d419973"
},
"children": [
{
"$oid": "5d153c148c044d174fb9b799"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d153c148c044d174fb9b799"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5cf707cde5dbb949ad5cc302"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d531e95ff66e07233a2bf76"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d5475e993b2f3707a737d40"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d54bd25a0e40d1239ec5d9c"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d54d460cd8ccb13386abd43"
},
"children": [
{
"$oid": "5fbdad479a311e6fd58812ff"
},
{
"$oid": "599646b5bd0b9864d8e7391d"
},
{
"$oid": "5924f500381e3b5854db8a0c"
},
{
"$oid": "56675f1446e0324b4566f6e9"
},
{
"$oid": "5914d7528ed1755954d6e88f"
},
{
"$oid": "5d71b5f49a311e6fd587e3dc"
},
{
"$oid": "5d66f0109a311e6fd587e12c"
},
{
"$oid": "5cd4dabce84cdd76faaf597f"
},
{
"$oid": "5546db39dbeafcef63e6efb6"
},
{
"$oid": "5491dd8bd707d710141027c1"
},
{
"$oid": "5cf580fb87823d36e74808bf"
},
{
"$oid": "58252929332df05c01c1624f"
},
{
"$oid": "56ef03976e418ae84779d827"
},
{
"$oid": "55dfd7d2bb58034a69d563fe"
},
{
"$oid": "58e43b26f79ce47642fae5c4"
},
{
"$oid": "577048a0a5f4970b59493861"
},
{
"$oid": "5c98455267dcef531cbc44f6"
},
{
"$oid": "5850ae570b242ff1782ea07c"
},
{
"$oid": "5cc64fadcf995a1d6b54e745"
},
{
"$oid": "56ef0296a7b280e91b475aeb"
},
{
"$oid": "5491ddb3d707d710141027c2"
},
{
"$oid": "5cabd38142524178c66be1f1"
},
{
"$oid": "58e9a01f33d3f1f208e032de"
},
{
"$oid": "5dae373a3c6e806fd3bbb1fc"
},
{
"$oid": "5ba2eb071e910a58acf98e3f"
},
{
"$oid": "5be8de44c052dc326ab1e810"
},
{
"$oid": "5a2f468069d12b0a0f4cc68e"
},
{
"$oid": "61c3a8bf3824dd48d99ab572"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d54d4fc5937ee123ad60c9d"
},
"children": [
{
"$oid": "5c1a9ae870c07e201b3a4880"
},
{
"$oid": "5d59c4efa0e40d1239ec5e14"
},
{
"$oid": "5de70b4f9a311e6fd587f4e9"
},
{
"$oid": "5c0ec151a9b73222dfdd82d6"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d59c4efa0e40d1239ec5e14"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d66f0109a311e6fd587e12c"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d66f12d2f2af36f22197fed"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d66f1cb3c6e806fd3bba448"
},
"children": [
{
"$oid": "5d66f12d2f2af36f22197fed"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d71b5f49a311e6fd587e3dc"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d82a7063c6e806fd3bbaa37"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d898e340e170b6f2336e8f0"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5d898fc83c6e806fd3bbab51"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5dae373a3c6e806fd3bbb1fc"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5de70b4f9a311e6fd587f4e9"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5e44aee59a311e6fd587fb53"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5e4dc8010e170b6f2336fd33"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5e9e56889a311e6fd587ff9c"
},
"children": [
{
"$oid": "59503126381e3b5854db8afc"
},
{
"$oid": "5be9cc9c20a38c39bc4c807b"
},
{
"$oid": "5c083f19d011855d2b41d458"
},
{
"$oid": "5cc659bc17629e20e1a66f40"
},
{
"$oid": "5491dfa5d707d710141027cb"
},
{
"$oid": "5cedbb5e87823d36e7480823"
},
{
"$oid": "5be9d2553863d639bbface86"
},
{
"$oid": "581bbdfbf0df7f680817970b"
},
{
"$oid": "5a24b30df6b76456d074f7c4"
},
{
"$oid": "594c8252381e3b5854db8af7"
},
{
"$oid": "55c8024609c8cb2176ba55da"
},
{
"$oid": "59965edbf39ca264d9dd41ca"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5ed02be39a311e6fd58802d6"
},
"children": [
{
"$oid": "57391e8ec1d461090ef7397d"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5edd66c79a311e6fd5880363"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5f0b9d810e170b6f2337073d"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5f4f019d0e170b6f23370b53"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5f6175683c6e806fd3bbcef7"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5fbdad479a311e6fd58812ff"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "5fe3bd7a3c6e806fd3bbd9f5"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "60187c220e170b6f23371a5e"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "606e58ad2f2af36f2219bcc8"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "613e86c24faf093afab2c0ea"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "61c3a8bf3824dd48d99ab572"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "61c3b11a4faf093afab2c86e"
},
"children": [
{
"$oid": "5a24977405bdd758991bdb93"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "61c3b3e83824dd48d99ab580"
},
"children": [
{
"$oid": "5c3bd69f70c07e201b3a4a99"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "61c3b84d7d28ec48d8455710"
},
"children": [
{
"$oid": "5a2472d6f6b76456d074f761"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "61c3bb467d28ec48d8455714"
},
"children": [
{
"$oid": "5965a855b3e775836dfd8d5b"
}
],
"kind": "Organisation"
},
{
"_id": {
"$oid": "6241210f7210ae3af7727813"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "6289c9d0adb2f54c79e239d4"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "628da1ce238868408a576c22"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "6298322c238868408a576cc5"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "62eb0a4456bdf04c7768843c"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "639643faf06d0004d42b2457"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "63a23108a4243f051c006f77"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "64090ff9903a4604d5e69032"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "64518b0da4243f051c007932"
},
"children": [],
"kind": "Organisation"
},
{
"_id": {
"$oid": "64924d566d951e05091e295d"
},
"children": [],
"kind": "Organisation"
}
]
需要用任何语言编写脚本来根据这些数据构建树,但需要确保没有重复。但我当前的代码不会这样工作:
const data = require("./dat.json");
function createTree(data, rootId) {
const root = data.find((item) => item._id.$oid === rootId);
if (!root) return null;
const children = root.children.map((child) => createTree(data, child.$oid));
return {
...root,
children,
};
}
function prettyPrint(nodes, level = 0) {
nodes.forEach((node) => {
console.log(`${" ".repeat(level)} (${node.kind}) ${node._id.$oid}`);
prettyPrint(node.children, level + 2);
});
}
const forest = data.map((item) => createTree(data, item._id.$oid));
prettyPrint(forest);
您可以看到重复的行,我不希望这些重复!从逻辑上讲,不会有任何重复。我尝试删除所有重复的 id,然后将有 129 个不同的值。
------更新-------- 既然我们已经知道所有的都是唯一的,我们可以做一些事情来检查这些重复项并只保留最深层并删除其他层吗?
你可以尝试使用这个Python代码:
import json
with open('dat.json') as f:
data = json.load(f)
id_to_node = {node['_id']['$oid']: node for node in data}
all_ids = set(id_to_node.keys())
children_ids = set()
for node in data:
for i, child in enumerate(node.get("children", [])):
child_id = child['$oid']
if child_id in id_to_node: # If child node exists
node['children'][i] = id_to_node[child_id]
children_ids.add(child_id)
root_ids = all_ids - children_ids
new_data = [id_to_node[root_id] for root_id in root_ids]
def pprint(node, ind=0):
ind_str = " "*4*ind
print(f"{ind_str}({node.get('kind', '')}) {node['_id']['$oid']}: ")
for child in node.get("children", []):
pprint(child, ind+1)
for node in new_data:
pprint(node)
您需要构建结构,然后过滤掉所有标记为子节点的节点。
然后你就可以漂亮地打印了
问题是您的
forest
将获得 data
中的 each项的节点。
forest
数组中应该只有顶级条目。要知道它们是什么,您首先必须检查哪些节点没有父节点。您可以在构建嵌套对象结构时执行此操作。
因此,调整您的
createTree
函数,使其仅将 data
作为参数,并返回根节点数组。
我还可以避免每次需要查找 id 时都用
find
扫描数据。为此使用哈希图(可以是 JavaScript 中的普通对象)。
像这样:
function createTree(data) {
const nodes = Object.fromEntries(data.map(item =>
[item._id.$oid, { ...item, children: [] }]
));
const roots = new Set(Object.values(nodes));
for (const {_id, children} of data) {
nodes[_id.$oid].children.push(...children.map(({$oid}) => {
roots.delete(nodes[$oid]);
return nodes[$oid];
}));
}
return [...roots];
}
这样称呼:
const forest = createTree(data);
prettyPrint(forest);
(
prettyPrint
无需更改)。