从图中的链接解析节点

时间:2018-07-12 15:45:05

标签: javascript d3.js

我有一个图,该图的边在links数组中指定。下面的功能是从链接中解析节点,但我不太了解如何操作。 OR语句中第一个子句的目的是什么,即link.source = nodes [link.source]?

mtcarsDT <- setDT(copy(mtcars))
makeSummaryTable <- function(dt, measure, group){
  dt[,.(N = .N, avg = mean(get(measure)), med = median(get(measure)))
    , by = eval(text = group)][order(get(group))]
}
makeSummaryTable(mtcars, 'qsec', 'am')

我是JavaScript的新手,在尝试了几次调试后,我仍然迷路。

1 个答案:

答案 0 :(得分:1)

似乎您正在尝试通过遍历nodes数组来创建links对象,但是您将nodes变量设置为空数组。相反,您应该将其设置为空对象:nodes = {}。将links.forEach()包装在一个函数中会更有意义,因为似乎要多次调用它,然后返回nodes对象值(如果已创建),或者创建它如果尚不存在。尝试示例(添加了日志,以便您可以查看代码的结果):

const links = [
  {source: "A", target: "B"},
  {source: "B", target: "C"},
  {source: "D", target: "E"},
  {source: "E", target: "C"}
  ];
    
const nodes = {};  
links.forEach((link) => {
  link.source = nodes[link.source] || (nodes[link.source] = {
    eid: link.source
  });
  link.target = nodes[link.target] || (nodes[link.target] = {
    eid: link.target
  });
  console.log(link.source);
  console.log(link.target);
});
    
console.log(nodes);