回答

收藏

如何检查 JavaScript 对象或数组中是否存在特定键?

技术问答 技术问答 369 人阅读 | 0 人回复 | 2023-09-11

如何检查 JavaScript 对象或数组中是否有特定键?
0 o) J+ [( ~# r3 z如果密钥不存在,我试着访问它,它会返回 false 还是抛错?$ g0 [" |* B4 f
                                                                ) T5 `1 F9 B( n2 n
    解决方案:                                                               
3 f( ?3 q- X+ ^9 O3 v) ]0 S) \. a/ D                                                                检查未定义性并不是测试密钥是否存在的准确方法。如果键存在但值实际上是undefined怎么办?
- }: m+ s6 M8 f% o# @# h3 K
    var obj = { key: undefined };console.log(obj["key"] !== undefined); // false,but the key exists!* z8 v# D+ c$ X* e- X
您应该改用in运算符:
' |& Q* }7 V3 @- Z6 Q! d( R
    var obj = { key: undefined };console.log("key" in obj); // true,regardless of the actual value
    & H- V5 O, t0 i
检查键是否不存在,请记住使用括号:
/ a# P6 A9 k" F
    var obj = { not_key: undefined };console.log(!("key" in obj)); // true if "key" doesn't exist in objectconsole.log(!"key" in obj);   // Do not do this! It is equivalent to "false in obj"
    / p2 d& [$ H( F1 ^( U" W) I
或者,如果您想特别测试对象实例的属性(而不是继承属性),请使用它hasOwnProperty:1 |* j0 h8 x6 \" Z/ f4 g/ U* h
    var obj = { key: undefined };console.log(obj.hasOwnProperty("key")); // true
    6 D; v8 b% v8 R+ _# x3 C
这些方法之间的性能比较in,hasOwnProperty关键是undefined,看到这个基准测试
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则