javascript - 从另一个数组聚合和平均一个数组
问题描述
我从日常周期性事件中接收到大量数据集,我需要将这些数据解析为 7 个轨迹,以便在 plotly.js 中创建散点图。我被困在(在数组地狱中)将多个数据集聚合和平均成 7 个数据集('Mon','Tue',...'Sun')所需的逻辑。
这是我到目前为止所拥有的(仅限伪代码,抱歉)......
let week = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
let days = new Array(6);
days[0] = {
x: [1, 2, 3, 4, 5], // x values in graph (always int)
y: [1.0, 1.0, 1.0, 1.0, 1.0], // y value for scatter graph
c: [1, 1, 1, 1, 1] // counter for each index of arrays (used for averaging)
}; // Test array for Mon
function collateData(day, data) {
let loop_day = week.indexOf(day);
// loop: for (var i = 0; i < days[loop_day].x.length; i++)
// day array: days[loop_day]
// data array: data
// calc at match (i = iterator): days[loop_day].y[i] += parseFloat((data.y[i]) / (days[loop_day].c[i] ++));
}
collateData('Mon', {
x: [1, 3, 3, 3, 3, 3, 4, 6],
y: [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8]
}); // new data for Mon
days[0] = {
x: [1, 2, 3, 4, 5, 6],
y: [1.05, 1.0, 1.33333333333333333333, 1.35, 1.0, 1.8],
c: [2, 1, 6, 2, 1, 1]
}; // Expected result after parse
以下是规则:
data
以形式出现{ x: [], y:[] }
,其中x
和y
具有相同的长度- 输入 (
data
) 的出现不可预测,例如 1 代表'Mon'
、 1 代表'Tue'
、 0 代表'Wed'
、 3 代表'Thu'
等等。 - 输出是形式为 的七个数组,其中、和具有相同的长度
days[
0-6
]
{ x: [], y: [], c: [] }
x
y
c
x
需要将输入 (data
) 但输出 () 中没有的新值days
添加到输出数组中,y
并将其对应的c
值设置为1
。- 所有匹配
x
的值(一个或多个),对应的y
值需要相加(算术加)然后除以c + 1
(得到平均值),对应c
的值在输出中递增(days
)。 - 可以忽略
x
输出 (days
) 而不是输入 ( ) 中的值data
我试过循环.find
、、、、.indexOf
等latIndexOf
。我的环境是node.js。我对新模块持开放态度,我已经检查了 lodash 的 API,但还没有弄清楚我需要什么工具!
这是我正在进行的工作:https ://jsfiddle.net/diego_lang/u9rqwjgf/
解决方案
推荐阅读
- javascript - 将块中的变量值用于全局范围 - JAVASCRIPT(在 FIRESTORE 中)
- python - 熊猫没有从其他工作表中获取数据
- android - 将 ConstraintLayout 转换为图像并保存
- python - 为什么在这种情况下需要使用星号?
- flutter - 当 sliver child 在屏幕中央时如何触发函数调用?
- mysql - 数据库设计 - 使用“所有者”、“合作伙伴”、“员工”为“公司”建模
- mysql - Laravel 6 多对多关系
- javascript - 单击按钮时出现类型错误,说明该功能未定义?
- c++ - 为什么使用一个构造函数初始化引用成功但另一个构造函数失败
- reactjs - 反应原生背景颜色仅覆盖一半屏幕,如何解决?