检查对象中是不是存在键[重复]
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"
要么是包含对象的数组,要么是包含 Gen
和 vr
属性的对象。
检查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" ;
【讨论】:
它有效 :) 谢谢..我犯的错误是:检查条件本身,然后访问“Gen”的值。【参考方案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”以上是关于检查对象中是不是存在键[重复]的主要内容,如果未能解决你的问题,请参考以下文章