【问题标题】:A leading decimal point can be confused with a dot前导小数点可能与点混淆
【发布时间】:2018-09-19 07:39:11
【问题描述】:

我尝试用红色节点获取一些地下天气信息。我已经发出一个 HTTP 请求,以获得十天一小时一小时的天气。

我需要提取一个温度。 我用这个:

var newMsg = { payload: msg.payload.hourly_forecast.0.temp.metric };
return newMsg;

如果我将msg.payload.hourly_forecast.0.temp.metric 放入调试控制台,它就可以工作,但在我的函数中,我有这个错误:

前导小数点可能与点混淆:'.0'

所以我试试这个:

var toto = 0;
var newMsg = { payload: msg.payload.hourly_forecast + '.' + toto + '.' + temp.metric };
return newMsg;

但不工作,错误是

ReferenceError: temp 未定义(第 2 行,第 74 列)

【问题讨论】:

  • 使用msg.payload.hourly_forecast["0.temp"].metric
  • "TypeError: Cannot read property 'metric' of undefined" 我尝试了 msg.payload.hourly_forecast["0.temp.metric"] 但消息没有返回
  • 你能给我们msg.payload.hourly_forecast 的输出吗
  • 输出为:ibb.co/ejaxge
  • 请不要将文字作为图片发布。这会导致大量问题。

标签: javascript node.js function node-red


【解决方案1】:

msg.payload.hourly_forecast 是您在此处显示的数组https://ibb.co/ejaxge

请使用msg.payload.hourly_forecast[0].temp.metric

在此处阅读有关数组的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array

【讨论】:

    【解决方案2】:

    要在 JavaScript 中处理数组元素,请使用方括号表示法:

    var newMsg = { payload: msg.payload.hourly_forecast[0].temp.metric };
    return newMsg;
    

    Node-RED 中的调试侧边栏也可用于标识任何消息元素的路径。这在此处的文档中进行了描述:https://nodered.org/docs/user-guide/messages#understanding-the-structure-of-a-message

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多