[英]How to create a dynamic object with data obtained from subtraction of 2 other objects in Node.JS?
我有一个用例,我需要用当前和上个月(或季度或周)的数据生成 object 以及它们之间的差异。
我有完整的数据。 但是我对如何在 object 值之间执行减法并用它的结果创建一个新的 object 感到困惑。
例如,我有以下数据。
data = {
"variables": [
"heat",
"humidity"
],
"lables": [
"February",
"January",
"December",
"November",
"October",
"September"
],
"values": [
[
300,
40,
0,
7000,
250,
150
],
[
400,
10,
0,
8000,
150,
50
]
]
}
现在我想生成以下 object。
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
}, {}))
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.