【问题标题】:Javascript test for existence of object key in a object with arraysJavascript 测试是否存在数组对象中的对象键
【发布时间】:2017-11-02 10:12:39
【问题描述】:

我需要检查复杂对象(带有数组的嵌套对象)中的属性是否存在。 我找到了几篇关于这个主题的帖子,访问量最大的一篇如下。 提供的解决方案(checkNested 函数)的问题不适用于带有数组的对象。 有没有人也有涵盖这种情况的解决方案?

干杯。

javascript test for existence of nested object key

这是我测试的功能:

function checkProperty(obj, prop) {
  var parts = prop.split('.');
  for (var i = 0, l = parts.length; i < l; i++) {
    var part = parts[i];
    if (obj !== null && typeof obj === "object" && part in obj) {
      obj = obj[part];
    } else {
      return false;
    }
  }
  return true;
}

这是我的对象的一个​​例子:

{
  "_msgid": "3ae30deb.af9962",
  "topic": "",
  "payload": "I am really upset terrible service",
  "error": null,
  "parts": {
    "id": "3ae30deb.af9962",
    "type": "array",
    "count": 2,
    "len": 1,
    "index": 0
  },
  "case_id": "0001",
  "features": {
    "usage": {
      "text_units": 1,
      "text_characters": 34,
      "features": 7
    },
    "sentiment": {
      "document": {
        "score": -0.912124,
        "label": "negative"
      }
    },
    "semantic_roles": [{
      "subject": {
        "text": "I"
      },
      "sentence": "I am really upset terrible service",
      "object": {
        "text": "really upset terrible service",
        "keywords": [{
          "text": "terrible service"
        }]
      },
      "action": {
        "verb": {
          "text": "be",
          "tense": "present"
        },
        "text": "am",
        "normalized": "be"
      }
    }],
    "language": "en",
    "keywords": [{
      "text": "terrible service",
      "sentiment": {
        "score": -0.912124
      },
      "relevance": 0.902721,
      "emotion": {
        "sadness": 0.462285,
        "joy": 0.002207,
        "fear": 0.125395,
        "disgust": 0.17766,
        "anger": 0.575927
      }
    }],
    "entities": [],
    "emotion": {
      "document": {
        "emotion": {
          "sadness": 0.462285,
          "joy": 0.002207,
          "fear": 0.125395,
          "disgust": 0.17766,
          "anger": 0.575927
        }
      }
    },
    "concepts": [],
    "categories": [{
      "score": 0.99946,
      "label": "/health and fitness/disease/headaches and migraines"
    }, {
      "score": 0.0155692,
      "label": "/education/school"
    }, {
      "score": 0.0141217,
      "label": "/family and parenting/children"
    }]
  }
}

还有一个失败的测试:

console.log(checkProperty(msg, 'features.keywords[0].text') ? msg.features.keywords[0].text : "NA");

【问题讨论】:

  • 你能提供一个我们可以使用的例子吗?
  • 您可以添加数组和您尝试过的部分。
  • 发布您的对象示例和您迄今为止尝试过的代码。
  • 我编辑了我的问题。谢谢

标签: javascript json object properties


【解决方案1】:

您使用的checkProperty 函数无法识别括号([]),它只能识别点。所以,给它点:

checkProperty(msg, 'features.keywords.0.text');

【讨论】:

    猜你喜欢
    • 2011-02-07
    相关资源
    最近更新 更多