回答

收藏

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

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

如何检查 JavaScript 对象或数组中是否有特定键?
2 b* Q/ a& _4 w0 T$ z- Y如果密钥不存在,我试着访问它,它会返回 false 还是抛错?6 r9 ]2 `( K6 Y) w
                                                               
) @+ q! Y' }. f    解决方案:                                                               
" v# I% ]6 B. _) N$ T4 V                                                                检查未定义性并不是测试密钥是否存在的准确方法。如果键存在但值实际上是undefined怎么办?  b/ l6 a) @5 ^0 f7 [9 m
    var obj = { key: undefined };console.log(obj["key"] !== undefined); // false,but the key exists!( `' u' e& q4 P% f9 S  V0 Z
您应该改用in运算符:
9 _; |8 O8 a4 p5 X! B
    var obj = { key: undefined };console.log("key" in obj); // true,regardless of the actual value
    0 ?5 @  O3 k. K2 D* [% }8 X
检查键是否不存在,请记住使用括号:
. U1 L) r9 S( O6 l4 x% C' P
    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"" i# m. T9 U. N& Q( z6 O. L
或者,如果您想特别测试对象实例的属性(而不是继承属性),请使用它hasOwnProperty:
2 h- n% ~/ F  S
    var obj = { key: undefined };console.log(obj.hasOwnProperty("key")); // true& v& R6 m, c* _  {) D* [9 f
这些方法之间的性能比较in,hasOwnProperty关键是undefined,看到这个基准测试
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则