【问题标题】:Check if object haves any nested objects and get its value检查对象是否有任何嵌套对象并获取其值
【发布时间】:2021-10-08 18:59:09
【问题描述】:

我有一个来自 post 请求的 JSON 对象序列

{
  "labels": {
     "name": "Toma/Dyrskuvegen5/360.001/Avkasttemperatur"
  }
}

在某些序列中,标签是空的(在这种情况下应该返回 false),在某些情况下,它们不是。 在某些序列中,

标签名称

将是一些其他的随机键名,例如:

labels.room_number

我的任务是识别 labels 下是否有任何键,并设置两个字符串,一个带有键名,另一个带有键值 上面的例子:

n = "name"

v = "Toma/Dyrskuvegen5/360.001/Avkasttemperatur"

【问题讨论】:

  • node-red 与您的问题有何关联? node-red 给出的限制是否会导致您尝试过的问题?
  • node-red 基于 JavaScript (nodejs) 没有任何限制到目前为止我只是失去了耐心并决定问一个问题????
  • 但是您没有向我们展示您尝试过的内容,因此我们无法帮助您修复它。 Stack Overflow 不会仅仅根据需求提供代码,而不会看到您已经尝试过如何解决问题。

标签: javascript node-red


【解决方案1】:

您可以使用Object.entries 来执行此操作。它返回给定对象的 [key, value] 对的数组

let incoming = {"labels":
    {"name":
    "Toma/Dyrskuvegen5/360.001/Avkasttemperatur"}};
    let incoming2 = {"labels":
    {"age":
    "22"}};
     let incoming3 = {"labels":
    {}};
    
let getThis = (incoming) => {
  let entries = Object.entries(incoming.labels);
  if(entries.length > 0){
  [s,v] = Object.entries(incoming.labels)[0];
  console.log(s,v);
  }
  return false;
};
getThis(incoming3);
getThis(incoming);
getThis(incoming2);

【讨论】:

  • 这没关系,假设我们有标签下的东西。但如果数据返回有空标签,它会抛出一个 TypeError
  • 不,不会。检查sn-p
  • 抱歉,我在测试时删除了整个 .labels 对象,这就是我得到答案的原因(添加了一个简单的 in/else 来检查我的结果是否为 .hasOwnProperty('labels') )现在效果很好。非常感谢
猜你喜欢
  • 2020-02-21
  • 2022-06-30
  • 2014-08-22
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
  • 2016-03-01
  • 2021-12-23
  • 1970-01-01
相关资源
最近更新 更多