检查键是否存在于JavaScript对象中
我们需要说明检查对象中是否存在特定键的正确方法。在继续使用正确的方法之前,让我们首先检查一种错误的方法,看看它实际上是如何错误的。
方法1:检查未定义的值(错误的方法)
由于JavaScript的易变性,我们可能要检查像这样的对象中是否存在key-
const obj = { name: 'Rahul' };
if(!obj['fName']){}
要么
if(obj['fName'] === undefined){}
这两种都是不正确的方法。为什么?
因为在这种情况下,碰巧没有“fName”键,但是假设存在一个“fName”,它被故意设置为false或undefined。
我们的函数应该返回该键不存在,但实际上它们确实存在。因此,在这种情况下,此方法将失败。
方式2-使用in运算符(正确方式)
刚刚在ES6中引入的in关键字将检查inerable中的条目。因此,要检查键是否存在,我们可以执行以下操作:
('fName' in obj);
方法3-使用hasOwnProperty()
方法(正确的方法)
使用Object.prototype.hasOwnProperty()方法,我们可以确定对象是否包含键。
它的语法是-
obj.hasOwnProperty('fName');
方式2和方式3之间的区别只是方式3仅检查被调用的对象实例的属性,而“输入”则检查对象实例的属性以及继承的属性(如果有)。