【发布时间】:2016-01-10 07:58:51
【问题描述】:
在红色节点中,我使用“收集器”收集值,当其中一个更新时,收集器会向我发送一个包含所有值对的“对象”:
{ "mqtt/1/": "-127.00", "mqtt/0/": "41.94" }
使用“json”,然后使用“stringsplit”,我得到了一个 f.e. 数组。 9 个值: 数组 [9](最多可包含 80 对值)!
[ "{", "mqtt/1/", ":", "-127.00", ",", "mqtt/0/", ":", "41.61", "}" ]
现在我想要一个函数节点,它将主题 (mqtt/1/) 中的值 (-127.00) 与主题 (mqtt/0/) 中的值 (41.61) 进行比较。 这是我的工作......但只有当我知道哪个是第一个主题/价值,哪个是第二个......
var outputMsgs = msg.payload;
var top1=outputMsgs[1];
var val1=outputMsgs[3];
var top2=outputMsgs[5];
var val2=outputMsgs[7];
msg = {payload: val1}
var msg2 = {payload: val2}
if (val1>val2)
{var msgOUT={payload: "BIGGER"};}
return [msg, msg2, msgOUT];
但问题是,有时“mqtt/1/”先出现,有时“mqtt/0/”出现,并且值会被切换。所以现在,也许有人可以帮助编写一个函数来选择正确的值和正确的主题,以便在下一步进行比较。
也许有办法查看主题是否包含0、1 ...80,然后将其按此顺序保存在数组中???
提前谢谢你!
【问题讨论】:
-
这不可能是 Java。 Java 不使用
var。 JavaScript 可以,但即便如此,我也不是 100% 清楚你在问什么。 -
使用
.indexOf("mqtt/1/")或.indexOf("mqtt/0/")检查是否有效? -
是的,它确实适用于
.indexOf("mqtt/1/")!是否可以不查看整个主题,例如“mqtt/1/”,而只查看主题中的一个数字/一个单词,例如“1”或“mqtt”?? -
然后做
.split("/"),第0个元素是单词,第1个是数字。 -
所以它会是一个数组中的数组?
标签: javascript arrays node-red