使用CoffeeScript检查对象中是否存在密钥的最简单方法

ajs*_*sie 109 javascript coffeescript

在CoffeeScript中,检查对象中是否存在密钥的最简单方法是什么?

Tre*_*ham 181

key of obj
Run Code Online (Sandbox Code Playgroud)

这适用于JavaScript key in obj.(CoffeeScript of在引用键in时使用,在引用数组值时:val in arr将测试是否valarr.)

如果你想忽略对象的原型,那么你的答案是正确的.如果你想忽略带有null或者undefined值的键,Jimmy的答案是正确的.

  • 最有可能的'obj`键也可以用来测试`.hasOwnProperty()`."最有可能"来自我没有尝试过,但这种语法在理解中起作用. (2认同)
  • @flyingsheep不,它只适用于理解.试试看:http://coffeescript.org/#try :own%20key%20of%20obj (2认同)

lim*_*der 34

'?' 操作员检查是否存在:

if obj?
    # object is not undefined or null

if obj.key?
    # obj.key is not undefined or null

# call function if it exists
obj.funcKey?()

# chain existence checks, returns undefined if failure at any level
grandChildVal = obj.key?.childKey?.grandChildKey

# chain existence checks with function, returns undefined if failure at any level
grandChildVal = obj.key?.childKey?().grandChildKey
Run Code Online (Sandbox Code Playgroud)

  • 如果密钥存在但是值为"null",则会失败. (16认同)

the*_*ejh 20

obj.hasOwnProperty(name)
Run Code Online (Sandbox Code Playgroud)

(忽略继承的属性)