如何解决JavaScript 中的数据聚合、数组多个 API 请求
我需要合并一系列具有相同形状数据的 API 请求。数据以数组内一系列数组的形式返回,带有纪元值和原始数据点值:
let response1 = [
[1610496000000,24294673600.944046],[1610582400000,24337321169.826145],[1610668800000,24213693580.926777],[1610755200000,24266793529.261494],[1610841600000,24315907744.20519],[1610928000000,24325253500.348637],[1611014400000,24361784336.09795],[1611025732000,24322220360.696705],]
let response2 = [
[1610496000000,4783652038.103683],4762603311.208288],4828960535.356582],4876847232.563923],5042504749.588362],5073254051.47403],5130649762.345672],[1611028765000,5125428823.791457],]
目标是能够将每个唯一的 epoch 值汇总为一个值。
假设每个数据集将返回相同数量的项目(和相同的时代)是安全的,尽管我会对一个优雅的解决方案感兴趣,如果每个数据集不包含其他数据集所做的时代.
我曾尝试将 .reduce
和 .map
结合使用,但遇到了障碍。
解决方法
- 创建一个空字典
- 迭代外部数组
- 在每次外部数组迭代中,迭代内部数组。
- 在每次子迭代中检查时间戳是否作为字典中的键存在。如果没有,则添加它并将其关联值设置为该字典条目的值。如果确实存在,请将其关联值添加到字典条目的当前值中。
const sumDict = {};
response.forEach((batch) => {
batch.forEach((datapoint) => {
const [key,value] = datapoint;
if (!sumDict[key]) {
sumDict[key] = value;
} else {
sumDict[key] += value;
}
});
});
注意:在您的示例中,您需要用另一组括号将响应数组包装起来。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。