【快速排雷】JS判断对象是否包含某个元素

本文探讨了JavaScript中判断对象是否包含某个元素的方法,并对比了直接使用if语句与hasOwnProperty方法的区别。通过示例代码展示了不同情况下两种方法的表现,强调了hasOwnProperty方法在处理特殊值时的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今日排雷:js判断对象是否包含某个元素

话不多说,上代码 ~

let data = {
    a:111,
    b:0,
    c:undefined,
    d:null,
    e:'',
    f:NaN,
    g:-0
}

if(data['a']){ console.log('data内包含a元素')}  //data内包含a元素
if(data['b']){ console.log('data内包含b元素')} 
if(data['c']){ console.log('data内包含c元素')}
if(data['d']){ console.log('data内包含d元素')}
if(data['e']){ console.log('data内包含e元素')}
if(data['f']){ console.log('data内包含f元素')} 
if(data['g']){ console.log('data内包含g元素')} 
if(data['h']){ console.log('data内包含h元素')}

当判断data中是否包含指定元素时,只有a可以照常执行if代码块中的内容。

其原理: 在Js中当if语句中的表达式不是Bool类型时,会将其强制转换成Bool类型。其中 0、undefined、null、’’(空字符串)、NaN 在强制转换成Bool类型时,其值为false。因此,当出现以上状况时,无法准确判断对象内是否某个元素。 

经修改

let data = {
    a:111,
    b:0,
    c:undefined,
    d:null,
    e:'',
    f:NaN,
    g:-0
}

if(data.hasOwnProperty('a')){ console.log('data内包含a元素')}  //data内包含a元素
if(data.hasOwnProperty('b')){ console.log('data内包含b元素')}  //data内包含b元素
if(data.hasOwnProperty('c')){ console.log('data内包含c元素')}  //data内包含c元素
if(data.hasOwnProperty('d')){ console.log('data内包含d元素')}  //data内包含d元素
if(data.hasOwnProperty('e')){ console.log('data内包含e元素')}  //data内包含e元素
if(data.hasOwnProperty('f')){ console.log('data内包含f元素')}  //data内包含f元素
if(data.hasOwnProperty('g')){ console.log('data内包含g元素')}  //data内包含g元素
if(data.hasOwnProperty('h')){ console.log('data内包含h元素')}  

所有继承了 Object 的对象都会继承到 hasOwnProperty 方法。这个方法可以用来检测一个对象是否含有特定的自身属性;和 in运算符不同,该方法会忽略掉那些从原型链上继承到的属性。

hasOwnProperty()方法会返回一个布尔值,即:对象中是否具有指定的属性。所以不论对象属性的值为null还是undefined,都会返回true。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸渔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值