javascript - 如何使用从 Node.JS 中减去 2 个其他对象获得的数据创建动态对象?
问题描述
我有一个用例,我需要使用当前和上个月(或季度或周)的数据以及它们之间的差异来生成对象。
我已经掌握了全部数据。但是我对如何在对象值之间执行减法并使用它的结果创建一个新对象感到困惑。
例如,我有以下数据。
data = {
"variables": [
"heat",
"humidity"
],
"lables": [
"February",
"January",
"December",
"November",
"October",
"September"
],
"values": [
[
300,
40,
0,
7000,
250,
150
],
[
400,
10,
0,
8000,
150,
50
]
]
}
现在我想生成以下对象。
result= {
"variables": [
"heat",
"humidity"
],
"lables": [
"February",
"January",
"December",
"November",
"October",
"September"
],
"values": [
[
300,
40,
0,
7000,
250,
150
],
[
400,
10,
0,
8000,
150,
50
]
],
"current":{
"_id":"February",
"heat":300,
"humidity":400
},
"previous":{
"_id":"January",
"heat":40,
"humidity":10
},
"difference":{
"heat":260,
"humidity":390
},
}
在这里,lables
和variables
是完全动态的。即,如果只有一个变量可用,则只有一个数组values
数组。有没有办法达到上述结果?
解决方案
你可以尝试这样的事情:
data.current = {
_id: data.lables[0],
...(data.variables.reduce((obj, variableName, variableIndex) => {
obj[variableName] = data.values[variableIndex][0]
return obj
}, {})
}
data.previous = {
_id: data.lables[1],
...(data.variables.reduce((obj, variableName, variableIndex) => {
obj[variableName] = data.values[variableIndex][1]
return obj
}, {}))
}
data.difference = {
...(data.variables.reduce((obj, variableName, variableIndex) => {
obj[variableName] = data.current[variableName] - data.previous[variableName]
return obj
}, {}))
}
推荐阅读
- arrays - 如何查看 Bash 数组中存在哪些值?
- sql - 将字符串列表转换为表格
- java - 在 Java 中使用 MessageFormat 将数字格式化为十六进制
- python - 将不规则长度的列表分配给子流程进行处理的最有效方法
- excel - 如何根据组合框值更改单元格
- php - 未定义的属性:Illuminate\Database\Query\Builder::$auth
- php - Instgarm API 用户搜索
- solr - Apache Solr:自定义文档路由器
- javascript - 如何在 ReactJS 中使用 debounce
- animation - 一个接一个地反应原生动画平面列表项目