检查对象中是不是存在键[重复]

Posted

技术标签:

【中文标题】检查对象中是不是存在键[重复]【英文标题】:check if key exist in object [duplicate]检查对象中是否存在键[重复] 【发布时间】:2021-08-06 08:29:34 【问题描述】:

我正在尝试检查键(“Gen”)是否存在,如果存在则返回值本身,如果不返回“未知”。

我的对象看起来像这样。

study = 
  "005": 
     

        "Gen" : ["F"],
        "vr" : "cs"
      

study = 
  "005": 
      
        "vr" : "cs"
      

在函数中我试图返回“Gen”的值

var gen = study["005"].Gen !== "undefined" || study["005"].Gen !== null ? study["005"].Gen[0] : "Unknown";

但是在这里它给我一个错误,就像在第二种情况下一样:其中“Gen”不存在,但它仍然通过 if 条件并寻找 study["005"].Gen[0]

如何检查“Gen”是否存在!! 任何帮助表示赞赏。

【问题讨论】:

无效数据。 "005" 要么是包含对象的数组,要么是包含 Genvr 属性的对象。 检查undefined而不是字符串”undefined” 如果 Gen 不存在,则条件 study["005"].Gen !== null 变为真,因此它通过了 if 条件。 是的,我错误地在 json 值中添加了一个额外的大括号。 (有问题更正)。 【参考方案1】:

这里的标准函数样式供您参考。你应该使用.hasOwnProperty

study = 
  "005":      
        "Gen" : ["F"],
        "vr" : "cs"      
   ,

let gen;
function check() 
  if (study["005"].hasOwnProperty("Gen")) 
    gen = study["005"]["Gen"]
   else
    gen = "Unknown"

check()
console.log(gen)

你想要什么

var gen = study["005"].hasOwnProperty("Gen") ? study["005"]["Gen"] : "Unknown" ;

【讨论】:

它有效 :) 谢谢..我犯的错误是:检查条件本身,然后访问“Ge​​n”的值。【参考方案2】:

您可以使用 nullish 合并运算符:

var gen = study["005"].Gen ?? "Unknown";

【讨论】:

或者:Object.keys(study['005']).includes('Gen') ? study['005']['Gen'] : 'Unknown';【参考方案3】:

我认为数据也是无效的,所以我试着清理一下。以下内容对您有用吗?

const study = 
    "005":
    
        "Gen": ["F"], "vr": "cs"
    



if(JSON.stringify(study['005']).includes('Gen')) 
    console.log(study['005']['Gen']);

【讨论】:

【参考方案4】:

检查密钥的正确条件是: study["005"].Gen !== undefined && study["005"].Gen !== null ? study["005"].Gen[0] : "Unknown";

【讨论】:

【参考方案5】:

您必须将其更改为

var gen = study["005"].Gen !== undefined ? study["005"].Gen[0] : "Unknown" ;

此外,您还有一对额外的花括号。而不是

study = 
  "005": 
      
        "Gen" : ["F"],
        "vr" : "cs"
      
   ,

study = 
  "005": 
      
        "vr" : "cs"
      
   

应该是

study = 
  "005": 
      "Gen" : ["F"],
      "vr" : "cs"
   ,

study = 
  "005": 
      "vr" : "cs"
   ,

【讨论】:

是的,你是对的..我错误地添加了额外的花括号..但现在更正了。同时我尝试了你说的代码,但我在控制台中得到了错误.. var gen = study["005"].Gen !== undefined ?研究[“005”].Gen[0]:“未知”;未捕获的类型错误:无法读取未定义的属性“0”

以上是关于检查对象中是不是存在键[重复]的主要内容,如果未能解决你的问题,请参考以下文章

即使未定义,也检查嵌套键是不是存在[重复]

在检索值之前检查哈希映射键是不是存在[重复]

检查属性中是不是存在对象[重复]

如何在oracle中检查对象是不是存在[重复]

Python:检查范围内是不是存在对象[重复]

JS检查深层对象属性是不是存在[重复]