繁体   English   中英

使用 typescript 将键转换为值,将值转换为 json object 中的键

[英]Transform keys to values, values to keys in json object using typescript

我试图将键交换为值,将值交换为键,但无法使用 javascript/typescript 找到正确的解决方案。

  course =  
  [ 
   { 
     "name" : "John",
     "course" : ["Java", "Python"]
   },
   { 
     "name" : "Michel",
     "course" : ["Java", "Python", "Ruby"]
   }
   ]

我想要结果 json 如下所示:

  result = [
   {
     "course" : "Java",
     "name" : ["John", "Michel"]

   }, 
   {
     "course" : "Python",
     "name" : ["John", "Michel"]
   },
   {
     "course" : "Ruby",
     "name" : ["Michel"]
   }

   ]

这是一个JS解决方案。 我正在使用reduce进行分组以获得这个中间 object

{
  Java: {
    course: "Java",
    name: ["John", "Michel"]
  },
  Python: {
    course: "Python",
    name: ["John", "Michel"]
  },
  Ruby: {
    course: "Ruby",
    name: ["Michel"]
  }
}

然后我根据需要将这个中间Object.values上的 Object.values 调用到 values 数组

 const course = [ { "name": "John", "course": ["Java", "Python"] }, { "name": "Michel", "course": ["Java", "Python", "Ruby"] } ] const result = Object.values(course.reduce((acc,{name,course}) => { course.forEach(c => { acc[c]??={course:c,name:[]} acc[c].name.push(name) }) return acc },{})) console.log(result)

 const course = [{ name: 'John', course: ['Java', 'Python'], }, { name: 'Michel', course: ['Java', 'Python', 'Ruby'], }, ] const temp = course.reduce((acc, value) => { value.course.forEach(item => { if (.acc[item]) { acc[item] = [] } acc[item].push(value,name) }) return acc }. {}) const result = Object.entries(temp),reduce((acc, [course. name]) => { acc,push({ course, name, }) return acc }. []) console log(result)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM