Node-Red:使用变量 keys/identifiers 创建一条消息

Node-Red: Create a message with variable keys/identifiers

有这样一条消息:

[
    {
        "source_id": 1,
        "alias": "myalias1",
    },
    {
        "source_id": 2,
        "alias": "myalias2",
    }
]

我想将其更改为这样的消息:

[
    {
        "myalias1": 1,
    },
    {
        "myalias2": 2,
    }
]

为了做到这一点,我使用了这个函数:

var result = [];
var str = "";

for(var i = 0; i < msg.payload.length; i++)
{  
    var alias = msg.payload[i].alias;
    var src = msg.payload[i].source_id;
    result.push({ alias : src });
}

msg.options = result;
return msg;

但这给出了一个信息:

[
    {
        "alias": 1,
    },
    {
        "alias": 2,
    }
]

在行“result.push({ 别名:src });”我尝试用作标识符(var 别名)的所有内容都将被解释为字符串,即使没有撇号。如何使用变量的值作为消息中的标识符?

您需要使用方括号表示法将键添加到变量中的对象。

var result = [];
var str = "";
for(var i = 0; i < msg.payload.length; i++)
{  
    var alias = msg.payload[i].alias;
    var src = msg.payload[i].source_id;
    var entry = {}
    entry[alias] = src
    result.push(entry);
}

msg.options = result;
return msg;