首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于关系扩展Json

基于关系扩展Json
EN

Stack Overflow用户
提问于 2021-05-11 18:31:14
回答 1查看 61关注 0票数 0

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

代码语言:javascript
复制
var PARENT_CHILD = {
  'Newton': ['Plato', 'Aristotle'],
  'Aristotle': ['Einstein'],
  'Plato': ['Tesla', 'Edison'],
  'Einstein': ['Hawking']
};

我想把它转换成如下形式:

代码语言:javascript
复制
 {
  "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"
  }
 }
EN

回答 1

Stack Overflow用户

发布于 2021-05-11 18:47:52

您可以在PARENT_CHILD中的条目上使用Array.reduce,在输出中为父条目创建一个新条目(如果它不存在),并向其中添加child数组,然后为该父条目的每个子条目创建一个新条目(具有parent属性):

代码语言:javascript
复制
var PARENT_CHILD = {
  'Newton': ['Plato', 'Aristotle'],
  'Aristotle': ['Einstein'],
  'Plato': ['Tesla', 'Edison'],
  'Einstein': ['Hawking']
};

var result = Object.entries(PARENT_CHILD).reduce((acc, [parent, child]) => {
  if (acc[parent]) {
    acc[parent].child = child.join(', ');
  } 
  else {
    acc[parent] = { child : child.join(', ') };
  }
  child.forEach(name => acc[name] = { parent });
  return acc;
}, {});

console.log(result);

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67484960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档