如何在JavaScript/Nodejs中将相同键的JavaScript对象动态组合到一个数组,并将给定的输入生成为预期输出,
请帮我一下。那真的很有帮助。
示例-
[
{
1: { date: 1638334800, value: 0 },
2: { date: 1638334800, value: 19.71 }
nth: { date: 1638334800, value: 19.71 }
},
{
1: { date: 1638334900, value: 0 },
2: { date: 1638334800, value: 23.77 }
nth: { date: 1638334800, value: 29.71 }
}
]
预期输出-
1: {
timeSeriesData: [
{
date: 1638334800,
value: 0,
},
{
date: 1638334900,
value: 0,
}
], units: '%'
},
2: {
timeSeriesData: [
{
date: 1638334800,
value: 19.71,
},
{
date: 1638334800,
value: 19.71,
}
], units: '%'
},
nth: {
timeSeriesData: [
{
date: 1638334800,
value: 19.71,
},
{
date: 1638334800,
value: 29.71,
}
], units: '%'
}
您只需迭代输入数据的键即可。然后,如果键已经存在于结果中,则附加新值,否则在结果中创建具有第一个值的数组。
这是一个工作演示:
const sample = [
{
1: { date: 1638334800, value: 0 },
2: { date: 1638334800, value: 19.71 },
nth: { date: 1638334800, value: 19.71 }
},
{
1: { date: 1638334800, value: 0 },
2: { date: 1638334800, value: 23.77 },
nth: { date: 1638334800, value: 19.71 }
}
];
const generateOutput = (inputData) => {
const results = {};
inputData.forEach((dataSet) => {
Object.keys(dataSet).forEach((key) => {
if (results[key]) {
results[key].push(dataSet[key]);
} else {
results[key] = [dataSet[key]];
}
});
});
return results;
}
console.log(generateOutput(sample));