簡體   English   中英

如何使用從 Node.JS 中減去 2 個其他對象獲得的數據創建動態 object?

[英]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
        },
}

在這里, lablesvariables是完全動態的。 即,如果只有一個變量可用,則只有一個數組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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM