![](/img/trans.png)
[英]Accessing keys and values of an object using forEach in TypeScript
[英]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.