Javascript 网络图数组的Json对象

Javascript 网络图数组的Json对象,javascript,node.js,angular,highcharts-ng,Javascript,Node.js,Angular,Highcharts Ng,我正在尝试构建一个网络图,其中点数据为[[from,to],[from,to]]。因此,我需要从JSON对象构建这种形式的数组。你能给我一个办法吗?我知道,这就是我们应用逻辑的方式,但我尝试了很多方法,但都没能做到。因此,我在这里得到一个很好的逻辑,它适用于物体的任何深度 我的示例对象是 myObj = { Continents : { Asia : { India : 1, China: 2 , Japan : 3 }, Europ

我正在尝试构建一个网络图,其中点数据为[[from,to],[from,to]]。因此,我需要从JSON对象构建这种形式的数组。你能给我一个办法吗?我知道,这就是我们应用逻辑的方式,但我尝试了很多方法,但都没能做到。因此,我在这里得到一个很好的逻辑,它适用于物体的任何深度

我的示例对象是

myObj = {
  Continents : 
  { Asia : {
      India : 1,
      China: 2 ,
      Japan : 3
    },
    Europe : {
      Sweden: 1,
      Norway : 2,
      Finland : 4,
      Denmark : 5
    },
    Africa : {
      Congo : 1,
      Kenya: 2,
      Zimbabwe : 3
    }
  }
}
物体的深度可以变化。现在我要做一个数组来形成节点,如下所示

myArray = [['Continents', 'Asia'],
           ['Continents', 'Europe'],
           ['Continents'], 'Africa'],
           ['Asia','India'],
           ['Asia','China'],
           ['Asia','Japan'],
           ['Europe', 'Sweden'],
           ['Europe', 'Norway'],
           ['Europe', 'Finland'],
           ['Europe', 'Denmark'],
           ['Africa', 'Congo'],
           ['Africa', 'Kenya'],
           ['Africa', 'Zimbabwe'],
]

您可以使用递归生成器:

  function* pairs(obj, parent) {
    for(const [key, value] of Object.entries(obj)) {
       if(parent) yield [parent, key];
       if(typeof value === "object")
          yield* pairs(value, key);
    }
 }
可用作:

  const result = [...pairs(obj)];

物体的深度可能不同。
您需要解释潜在的变化。我们只能在你给我们的东西上提供帮助,这是目前一个明确定义的结构。@Archer如果我得到发布对象的解决方案,我想我可以从中找到解决方案。很好的解决方案。但它似乎只在node.js和ES6中起作用。它不适用于Angular/Typescript