我有一个用例,其中我需要使用当前和上个月(或季度或周)的数据以及它们之间的差异来生成对象。
我已经掌握了全部数据。但我对如何在对象值之间执行减法并用其结果创建一个新对象感到困惑。
例如,我有以下数据。
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
},
}
这里,标签
和变量
是完全动态的。即,如果只有一个变量可用,则只有一个数组 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
}, {}))
}
关于javascript - 如何使用 Node.JS 中的 2 个其他对象相减获得的数据创建动态对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60186868/