如何将相同键的JavaScript对象动态组合到一个数组中



如何在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));

最新更新