问题标签 [tree-structure]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
342 浏览

javascript - 如何在 javascript 中构建树 json

我正在玩 D3 图表。他们提供的示例之一是绘制树形结构的图表(https://observablehq.com/@d3/tidy-tree

我按照此处的示例( https://azurebi-docs.jppp.org/powerbi-visuals/d3js.html?tabs=docs%2Cdocs-open#sample )将此图表嵌入到 Power BI 中,但我碰壁了与我目前拥有的数据。该图表使用 json 作为输入 ( https://raw.githubusercontent.com/d3/d3-hierarchy/v1.1.8/test/data/flare.json )。生成这样的树形结构json的脚本如下:

我面临的问题是我的数据具有不同的结构......脚本假定级别变量由所有级别组成。然而,我的数据结构是这样的,即每一行都有一个名称,即 CategoryName 和一个指向父级的指示符,即来自同一个表的 ParentName。如此有效,记录是

我应该如何修改提供的 javascript 以根据我目前拥有的数据结构构建 json?

感谢您提供的任何形式的支持或参考。

编辑

数据格式为:

整个 PowerBI D3 脚本如下所示:

0 投票
1 回答
756 浏览

json - 将类似 json 的分层数据存储为嵌套目录树?

TLDR

我正在寻找一种现有的约定来编码/序列化目录结构中的树状数据,分成小文件而不是一个大文件。

背景

在不同的场景中,我们希望将树状数据存储在文件中,然后可以在 git 中对其进行跟踪。Json 文件可以表达包管理器的依赖关系(例如,php 的 composer,node.js 的 npm)。Yml 文件可以定义路由、测试用例等。

通常,“树结构”是键值列表和“序列”列表的组合,其中每个值都可以再次是树结构。

关联键的顺序通常是无关紧要的,理想情况下应该标准化为字母顺序。

将大树结构存储在单个文件(无论是 json 还是 yml,然后用 git 跟踪)时的一个问题是,如果不同的分支在同一个键值列表中添加和删除条目,则会出现大量合并冲突。

特别是对于顺序不相关的键值列表,将每个子树存储在单独的文件或目录中会更加 git 友好,而不是将它们全部存储在一个大文件中。

从技术上讲,应该可以创建一个像 json 或 yml 一样富有表现力的目录结构。

性能问题可以通过缓存来克服。如果要在 git 中跟踪文件,我们可以假设它们大部分时间都不会改变。

主要挑战: - 如果在文件或目录名称中使用会导致某些或大多数文件系统出现问题的“特殊字符”,如何处理?- 如果我需要对特殊字符进行编码或消除歧义,我怎样才能让它保持美观?- 如何处理某些文件系统中文件名长度的限制?- 如何处理其他文件系统的怪癖,例如不区分大小写?这仍然是一件事吗?- 如何表达序列列表,其中可能包含键值列表作为子项?串行列表不能表示为目录,因此它的子级必须存在于同一个文件中。- 我怎样才能避免重新发明轮子,创造别人没有使用的我自己编造的“惯例”?

所需功能: - 像 json 或 yml 一样富有表现力。- 对 git 友好。- 机器可读和可写。- 人类可读和可编辑,也许有限制。- 理想情况下,对于在单个文件中表达的结构和值,它应该使用已知格式(json、yml)。

天真的方法

当然,第一个想法是将 yml 文件用于文字值和序列列表,并使用目录作为键值列表(在顺序无关紧要的情况下)。在键值列表中,文件或目录名称被解释为键,文件和子目录被解释为值。

这有一些限制,因为不是每个可能在 json 或 yml 中有效的键也是每个文件系统中的有效文件名。最明显的例子是斜线。

问题

我有不同的想法,我自己会怎么做。

但我真的在寻找某种已经存在的约定。

相关问题

持久性:存储为目录树的数据树
这是关于性能的问题,以及关于像数据库一样使用文件系统的问题——我认为。
我对性能不太感兴趣(缓存使其无关紧要),而对实际存储格式/约定更感兴趣。

0 投票
0 回答
1953 浏览

angular - 使用springboot后端在Angular中动态创建文件资源管理器(SFTP,获取文件夹结构并传递给角度)

我使用了这个链接 - https://stackblitz.com/edit/angular-file-explorer

我的问题是他们硬编码了文件夹结构,其中根文件夹是用常量创建的,但我的文件夹结构是动态的,有多个子目录,我通过 SFTP 传输到服务器并下载文件

所以我无法创建像下面这样的常量 - 有人可以帮我如何使用动态数据创建文件资源管理器

下面是app.component.ts对文件夹结构进行硬编码的片段

我发现有用的其他几个链接如下:

  1. https://www.bennadel.com/blog/3601-more-fun-with-recursive-components-tree-state-and-one-way-data-flow-in-angular-7-2-13.htm
  2. https://ej2.syncfusion.com/angular/demos/?_ga=2.55163950.443791518.1579042805-240484438.1579042805#/material/file-manager/overview

提前致谢

0 投票
0 回答
123 浏览

javascript - 我需要递归检查 Javascript 中的动态树结构

我需要你的帮助。所以这次的目标是我想递归地检查我的树结构。

基本上这就是我需要它做的: 在此处输入图像描述

一方面我有一个所谓的treeNode(例如:'Article.Artnr'),另一方面有一个所谓的contextEntry(它有一个'Article')。我需要检查 treeNode 中的名称是否存在于 contextEntry 中,如果存在我需要检查它的类型然后继续。现在棘手的部分:namesSplit 中的下一个名称是“Artnr”,我需要检查它是否是 contextEntry 中“Article”的属性。再次,如果是我需要检查它的类型并继续。我事先不知道我的结构会有多深,所以我真的很感谢你在这方面的帮助。

我已经像这样实现了我的递归检查:

我还必须检查上下文中每个值的类型。有 4 种可能的数据类型:PrimitiveArray of PrimitiveObjectArray of Objects

如果上下文中的值是基元或基元数组,它将引发错误,如果它是一个对象,我只需要提取它的值,如果它是一个对象数组,我需要找到正确的对象和而不是从中提取价值

VariableType 是一个枚举。我的检查功能是这样实现的:

0 投票
2 回答
433 浏览

python - Python递归将元组列表排序为树结构

我是编码新手,并且陷入了尝试对元组列表进行递归排序的过程中。这是我的代码:

我得到的输出:

但所需的输出将是:

我需要类似的东西:

关于如何实现我的目标有什么想法吗?

0 投票
1 回答
94 浏览

jstree - JS TREE中可以用实线代替虚线吗?

我想在 JS 树结构中使用实线而不是虚线。

参考截图

jstree

我可以使用以下代码删除虚线

$('#html').jstree().hide_dots();

但我想把它从虚线改为实线。有什么办法吗。?

0 投票
2 回答
652 浏览

tabulator - 如何在 Tabulator 中过滤树结构中的子项?

我尝试setFilter在我的 Tabulator 树结构上调用函数,以过滤掉项目。它似乎只过滤掉顶级父母。知道如何使这项工作适用于任何级别(任何孩子或父母)吗?http://tabulator.info/docs/4.1/tree对过滤的工作原理没有多说。

功能

table.setFilter('id', '=', 214659)没有返回任何东西......

树形结构

0 投票
1 回答
154 浏览

sql-server - SQL Server 触发器(我需要从任何给定节点移动分层树结构)

再会

我有一个为特定前端应用程序设计的遗留数据库。我正在使用这些数据进行多个额外的应用程序开发案例,但是,遗留数据库已被证明不足以用于未来。不幸的是,由于我仍然需要运行前端应用程序,因此必须保留旧数据库。

我已经创建了一个将使用的类似结构的新数据库,每次通过前端应用程序将车辆(我们将使用的示例)添加到遗留数据库时,我都设置了一个触发器以将指定的数据推送到插入新数据库(这一切都很好)。

现在解决我的问题。每辆车都分配有一个位置键,该键描述了它在位置的层次树结构上属于哪个位置。我需要从任何树级别获取这个位置,并使用位置表在遗留数据库中找到它下方和上方的所有节点,然后将节点的所有位置键添加到新数据库中的车辆表中,这将由 7 个级别(列)组成。我只需要获取位置0,1,2,3,4,5,6,7.

例如,我将有七列,其中任何一个都可能是车辆注册位置。

据我了解,您需要查看旧数据库车辆表、逻辑级别表和位置表(所有位置都与父键一起列出)才能帮助我。

我将附上这些表格和我拥有的简单触发器,我无法解释我有多少帮助,无论是逻辑语句还是可能起作用的编码触发器(奖金)。提前非常感谢。我只是在与将所有 LocKeys 导出到变量 @level1Key 等作斗争。

位置表

逻辑级别表

车辆表

代码:

来自插入的预期输入:

新数据库的预期输出:

真的很感激一些帮助

0 投票
0 回答
52 浏览

mongodb - 对具有树结构的 MongoDB 数据库进行分片

我有一个具有树结构的 MongoDB 集合,需要使用分片。在有关分片的文档中,我找不到任何特定于树结构的内容。如果有人可以让我知道如何处理这个问题,那就太好了。谢谢你。

0 投票
0 回答
167 浏览

php - 从mysql中的自引用表中检索父子层次结构

我在结构之上有一个元素层次结构。 层次结构

在这个元素的层次结构中,插入到我的数据库中,如下图所示。 表结构

  • 在此表中,元素具有单独的 elementid 和元素标签。
  • 连接器将连接这两个元素,并且具有单独的 id,起点是源,终点是目标。
  • 源点和目标点具有连接到起点和终点的 elementid。

我将从上面提到的表中获取数据并插入到元素映射表中。如下表所示。

在此处输入图像描述

注意: 元素级别的层次结构在任何级别都会动态增加。

提前致谢。