【问题标题】:JS Check property exists for number values [duplicate]JS Check属性存在于数值[重复]
【发布时间】:2019-03-11 20:38:02
【问题描述】:

我已经使用如下示例来检查对象上是否存在属性。

const payload ={payment:0}

if(payload && payload.payment){
  console.log(payload.payment)
}else{
  console.log('Issue')
}

但它以 0(零)值失败。

这个问题是关于一个具有整数键的对象,当键值为零时,大多数其他答案都不起作用。

【问题讨论】:

  • 你试过了吗? 'payload' in payment 确实有效。
  • @FlorianWeimer 我在lodash 中发现has 也这样做。

标签: javascript ecmascript-6


【解决方案1】:

查看属性payment是否存在于对象payload中可以这样写

'payment' in payload

或者如果您想知道属性是否直接在对象中定义(而不是通过原型继承),比如说

payload.hasOwnProperty('payment')

表达式payload.payment,当值为0时,当用作布尔值时将产生false。这是因为以下值将始终像false

  • 0
  • false
  • NaN
  • undefined
  • null
  • 空字符串

作为false 的这些值的技术术语是“虚假的”。所以因为 0 是假的,所以每当你写 !payload.payment 时,这个值实际上是 true 代表 0false 代表其他所有内容。使用上述两种技术之一(inhasOwnProperty)检查缺失的属性。

【讨论】:

  • 我在lodash 中发现has 也这样做。
猜你喜欢
  • 2022-08-13
  • 2015-06-10
  • 2019-04-04
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2013-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多