Javascript 基于子关系和父关系展开Json

Javascript 基于子关系和父关系展开Json,javascript,arrays,json,Javascript,Arrays,Json,我有以下JSON数据,如果子名称中的任何一个与父名称中的任何一个匹配,那么我想创建新的JSON集 var PARENT_CHILD = { 'Newton': ['Plato', 'Aristotle'], 'Aristotle': ['Einstein'], 'Plato': ['Tesla', 'Edison'], 'Einstein': ['Hawking'] }; 我想将其转换为如下所示: { "Newton": { "chi

我有以下JSON数据,如果子名称中的任何一个与父名称中的任何一个匹配,那么我想创建新的JSON集

var PARENT_CHILD = {
  'Newton': ['Plato', 'Aristotle'],
  'Aristotle': ['Einstein'],
  'Plato': ['Tesla', 'Edison'],
  'Einstein': ['Hawking']
};
我想将其转换为如下所示:

 {
  "Newton": {
    "child": "Plato, Aristotle"
  },
  "Plato": {
    "parent": "Newton",
    "child": "Tesla, Edison"
  },
  "Aristotle": {
    "parent": "Newton",
    "child": "Einstein"
  },
  "Einstein": {
    "parent": "Aristotle",
    "child": "Hawking"
  },
  "Tesla": {
    "parent": "Plato"
  },
  "Edison": {
    "parent": "Plato"
  },
  "Hawking": {
    "parent": "Einstein"
  }
 }

我在中途被击中,我的代码可以在这里找到:

您可以在
父项_子项
中的条目上使用,在输出中为父项创建一个新条目(如果它不存在)并将
子项
数组添加到其中,然后创建一个新条目(使用
父项
属性)对于该父母的每个子女:

var PARENT\u CHILD={
“牛顿”:[柏拉图”,“亚里士多德],
“亚里士多德”:[爱因斯坦],
“柏拉图”:[特斯拉”,“爱迪生],
“爱因斯坦”:[“霍金”]
};
var result=Object.entries(PARENT\u CHILD).reduce((acc,[PARENT,CHILD])=>{
if(acc[父项]){
acc[parent].child=child.join(',');
} 
否则{
acc[parent]={child:child.join(',')};
}
forEach(name=>acc[name]={parent});
返回acc;
}, {});
控制台日志(结果)
您可以对
父项\子项
中的条目使用,在输出中为父项创建一个新条目(如果它不存在)并将
子项
数组添加到其中,然后为该父项的每个子项创建一个新条目(使用
父项
属性):

var PARENT\u CHILD={
“牛顿”:[柏拉图”,“亚里士多德],
“亚里士多德”:[爱因斯坦],
“柏拉图”:[特斯拉”,“爱迪生],
“爱因斯坦”:[“霍金”]
};
var result=Object.entries(PARENT\u CHILD).reduce((acc,[PARENT,CHILD])=>{
if(acc[父项]){
acc[parent].child=child.join(',');
} 
否则{
acc[parent]={child:child.join(',')};
}
forEach(name=>acc[name]={parent});
返回acc;
}, {});

控制台日志(结果)请在问题中直接包含当前代码的适当部分,而不是将其转储到外部平台。@CBroe请查看JSFIDLE链接,我在问题中为当前代码附上了该链接。谢谢:“如果有可能创建一个可以链接到(例如,on或)的问题实例,那么就这样做,但也要将代码复制到问题本身。不是每个人都可以访问外部站点,链接可能会随着时间的推移而断开。”明白了,我会确保下次再这样做。请在问题中直接包含当前代码的适当部分,而不是将其转储到外部平台上。@CBroe请查看JSFIDLE链接,我在问题中为当前代码附带了该链接。谢谢:“如果有可能创建一个你可以链接到(例如,on或)的问题的实例,那么就这样做——但也要将代码复制到问题本身。不是每个人都可以访问外部网站,链接可能会随着时间的推移而断开。”明白了,我会确保下次再这样做。