簡體   English   中英

d3.js中的嵌套數組

[英]nested arrays in d3.js

我已經看到了有關在d3.js中處理“嵌套json”的問題,並且已經看到建議的解決方案主要是“拉平”數據(意味着創建新變量並將數據按所需級別壓入),這里有兩個示例:

我的問題是:是否可以使用各種數組函數之一來訪問數據級別而無需創建新變量? 處理數組

我有一個看起來像這樣的數組:

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)

我想念什么?

我希望這個問題有意義。

PS:如果必須將數組弄平,那么在javascript中做數組有什么好處,或者如果我創建數組(例如在python中)並將其傳遞給javascript,是否一樣

再次閱讀您的文章后,我想我知道您的嘗試。

如果要使用諸如d3.max類的d3.max訪問權重列,則可以使用訪問器功能。

訪問器函數指定您如何查看數組中的項目。 在您的情況下,您需要一個函數來查看dataset.links中每個鏈接中的weight字段。 使用鏈接作為輸入,此功能非常簡單:

function getWeight(link){return link.weight}

然后,我們可以將此函數用作訪問器函數,以獲取dataset.links最大weight字段,如下所示:

var maxWeight = d3.max(dataset.links, getWeight)

這使用d3.max命令的一般形式d3.max(array [,accessorFcn])

我已經設置了一個提琴 ,然后提醒最大重量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM