回答

收藏

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

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

如何检查 JavaScript 对象或数组中是否有特定键?  q! k1 f6 j* [3 k/ q
如果密钥不存在,我试着访问它,它会返回 false 还是抛错?
+ T1 o, b& Y* ~# K  D% R: y* L                                                                ) w2 G$ I, A* ]2 m+ N- c0 T
    解决方案:                                                                - e$ c  s3 ^: g; p2 C2 }5 M
                                                                检查未定义性并不是测试密钥是否存在的准确方法。如果键存在但值实际上是undefined怎么办?
6 K7 U  W  `/ B8 h/ c
    var obj = { key: undefined };console.log(obj["key"] !== undefined); // false,but the key exists!/ ?' p3 i3 f5 Q$ z8 b/ S
您应该改用in运算符:
, P! q1 |- N& x; J" c8 h7 z
    var obj = { key: undefined };console.log("key" in obj); // true,regardless of the actual value
    " \+ n8 M! W! Z2 R
检查键是否不存在,请记住使用括号:+ Y% V8 a2 x) y4 b
    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", |3 B" y# _1 V- F, f) j
或者,如果您想特别测试对象实例的属性(而不是继承属性),请使用它hasOwnProperty:. l" d; j! I0 F5 u" ^% E
    var obj = { key: undefined };console.log(obj.hasOwnProperty("key")); // true* V4 G- y$ f0 P2 L) f
这些方法之间的性能比较in,hasOwnProperty关键是undefined,看到这个基准测试
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则