回答

收藏

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

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

如何检查 JavaScript 对象或数组中是否有特定键?
( Y+ j' A. R; R如果密钥不存在,我试着访问它,它会返回 false 还是抛错?# l. ^9 j0 \) j  h# j' c5 [1 I
                                                                ! ~/ `6 S/ v, ]0 _, r0 M$ z
    解决方案:                                                                " U" e/ p: {' ^) I* q9 u& n9 r
                                                                检查未定义性并不是测试密钥是否存在的准确方法。如果键存在但值实际上是undefined怎么办?7 }# A6 Z/ K( N! o
    var obj = { key: undefined };console.log(obj["key"] !== undefined); // false,but the key exists!
    6 y7 |. ~: [3 b2 T" i1 _2 w
您应该改用in运算符:
3 V: p9 C3 a) P" N, K! d
    var obj = { key: undefined };console.log("key" in obj); // true,regardless of the actual value1 ?/ X, X3 B, g  e$ ~
检查键是否不存在,请记住使用括号:& |, o% z$ w: {9 \* ?; |
    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"7 S0 ~( C9 z( t7 W3 k' C
或者,如果您想特别测试对象实例的属性(而不是继承属性),请使用它hasOwnProperty:# H- M% B; Q; ?' n: A
    var obj = { key: undefined };console.log(obj.hasOwnProperty("key")); // true
    5 ?3 r/ m; U  k( P+ |
这些方法之间的性能比较in,hasOwnProperty关键是undefined,看到这个基准测试
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则