【发布时间】:2026-01-02 07:00:02
【问题描述】:
我看到了有关在 d3.js 中处理“嵌套 json”的问题,并且看到建议的解决方案主要是“扁平化”数据(意味着创建一个新变量并将数据推送到所需的级别) 这里举两个例子:
我的问题是:可以使用各种数组函数之一来访问数据级别而不创建新变量吗? Handling arrays
我有一个看起来像这样的数组:
var dataset =
{"directed": false,
"graph": [],
"nodes":
[
{"Region": "X15", "Group": "EU", "id": "BE"},
{"id": "FR"},
{"id": "BG"},
{"id": "DK"},
{"id": "HR"},
{"id": "DE"}
],
"links":
[
{"source": 0, "target": 0, "weight": 0},
{"source": 0, "target": 1, "weight": 130},
{"source": 0, "target": 2, "weight": 1},
{"source": 0, "target": 3, "weight": 36},
{"source": 0, "target": 4, "weight": 4},
{"source": 0, "target": 5, "weight": 117}
],
"multigraph": false}
我已经尝试了以下
并且我想访问权重(使用 d3.max 计算其最大值)
dataset.links // gives me link
dataset.links[0].weight // gives me the weight of first but can't get the index to work
当使用数组函数时,我无法获得低于该值的元素
d3.entries(dataset)
d3.values(dataset.links)
我错过了什么?
我希望这个问题是有意义的。
P.S:如果必须展平数组,在 javascript 中这样做有什么好处,或者如果我创建数组(例如在 python 中)并将其传递给 javascript 是否相同
【问题讨论】:
-
数据集不是一个数组,它是一个对象。数组操作对它不起作用。你在底部做的是把它变成一个数组,但我不确定你想用它做什么。
-
谢谢。我现在看到了区别。我只想访问权重,例如计算其最大值。知道我该怎么做吗?
标签: javascript json d3.js