我有以下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"
}
}发布于 2021-05-11 18:47:52
您可以在PARENT_CHILD中的条目上使用Array.reduce,在输出中为父条目创建一个新条目(如果它不存在),并向其中添加child数组,然后为该父条目的每个子条目创建一个新条目(具有parent属性):
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);
https://stackoverflow.com/questions/67484960
复制相似问题