我有以下JavaScript对象。我需要从给定的对象生成一个新的对象数组。在JavaScript中我应该采取什么方法?
const ObjOfObj = {
'virus': [
{
'2016': 67,
'2017': 59,
'2018': 18,
'2019': 1
}
],
'cure': [
{
'2016': 51,
'2017': 50,
'2018': 16,
'2019': 1
}
]
};如何转换或透视以生成以下对象数组?
const ArrOfObj = [
{'year': '2016', 'virus': 67, 'cure' : 51},
{'year': '2017', 'virus': 59, 'cure' : 50},
{'year': '2018', 'virus': 18, 'cure' : 16},
{'year': '2019', 'virus': 1, 'cure' : 1},
]发布于 2020-05-16 23:59:38
您可以像这样使用reduce函数。
const ObjOfObj = {
'virus': [
{
'2016': 67,
'2017': 59,
'2018': 18,
'2019': 1
}
],
'cure': [
{
'2016': 51,
'2017': 50,
'2018': 16,
'2019': 1
}
]
};
const groupBy = (obj) => {
const keys = Object.keys(obj);
const mapping = keys.reduce((acc, k) => {
obj[k].forEach(item => {
Object.keys(item).forEach(yearKey => {
tracked = acc[yearKey];
if (!tracked) {
acc[yearKey] = {
year: yearKey
};
}
acc[yearKey][k] = (acc[yearKey][k] | 0) + item[yearKey];
});
});
return acc;
}, {});
return Object.entries(mapping);
};
console.log(groupBy(ObjOfObj));https://stackoverflow.com/questions/61839389
复制相似问题