JS Check属性存在于数值[重复]

Posted

技术标签:

【中文标题】JS Check属性存在于数值[重复]【英文标题】:JS Check property exists for number values [duplicate] 【发布时间】: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 也这样做。 【参考方案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 也这样做。

以上是关于JS Check属性存在于数值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

ts 属性 'map' 不存在于类型'Observable<Response>' [重复]

原生js的数组除重复

js判断一个值是不是存在于一个js数组中

js判断一个值是不是存在于一个js数组中

JS去除数组中重复的数字

无法在 Vue.js 中设置未定义的属性“产品”[重复]