JavaScript 中的 not in 运算符
对象是 JavaScript 中最常用的键值属性。为了检查某个属性是否存在,JavaScript 提供了几种可能性。今天的帖子将向你展示如何在 JavaScript 中检查对象上是否存在特定属性。
在 JavaScript 中检查属性是否存在
属性与存储在对象中的键值配对。一个 object
可以包含许多这样的属性。JavaScript 中是否存在某个属性由操作符 id in object
或 Object.prototype.hasOwnProperty()
决定。
JavaScript 中的 Object.prototype.hasOwnProperty()
这是 JavaScript 提供的内置方法,用于检查指定的属性是否属于 Object。它迭代对象并根据结果返回布尔值。
语法:
Object.prototype.hasOwnProperty(prop);
此函数将 prop
作为 string
格式的输入。它是一个强制性参数。此方法只检查给定的属性是否存在于对象中,而不管值如何。即使属性值为 null
或 undefined
,它也会返回 true
。也可以在 Array
上调用此方法,因为该数组是从 Object 派生的。有关更多信息,请阅读 hasOwnProperty()
方法的文档。
const inputObject = {
id: 42,
name: 'John Doe'
};
console.log(inputObject.hasOwnProperty('name'));
if (!inputObject.hasOwnProperty('email')) {
inputObject.email = 'Johndoe@gmail.com';
}
console.log(inputObject);
在上面的代码块中,我们定义了对象 id
和 name
的两个属性。当你传递 inputObject.hasOwnProperty('name')
时,它会检查 inputObject
中是否存在 name 属性。如果要检查相反的条件,请添加!
在条件之前,它将否定检查。例如,如果对象内不存在新属性,则可以添加新属性。上面代码给出的输出可以在下面看到。
输出:
true
{
email: "Johndoe@gmail.com",
id: 42,
name: "John Doe"
}
JavaScript 中的 in
运算符
它是 JavaScript 提供的内置方法,用于检查对象或原型链是否拥有指定的属性。它迭代对象并根据结果返回布尔值。
语法:
prop in object
此函数将 prop
作为 string
格式的输入。它是一个强制性参数。此方法仅检查给定的属性或数组索引是否存在于 Object
或其 prototype chain
。也可以在 Array
上调用此方法,因为该数组是从 Object 派生的。有关更多信息,请阅读 in
operator 方法的文档。
hasOwnProperty
和 in
运算符之间的主要区别在于,如果属性是在对象内部继承的或尚未声明,则前一个返回 false。相比之下,in
运算符不会检查对象原型链中的指定属性。例如,Object
基类将 hasOwnProperty
作为一个函数,因此 hasOwnProperty
将返回 false
,而 in
运算符将返回 true
。
const inputObject = {
id: 42,
name: 'John Doe'
};
console.log('name' in inputObject);
if (!('phone' in inputObject)) {
inputObject.phone = '7878787878';
}
console.log(inputObject);
在上面的代码块中,我们定义了对象 id
和 name
的两个属性。当你在 inputObject 中传递 name
时,它会检查 inputObject
中是否存在 name 属性。如果要检查相反的条件,请添加!
在条件之前,否定检查。例如,你可以添加一个新属性 phone
,如果它不存在于对象中。上面的代码片段给出的输出如下所示。
输出:
true
{
id: 42,
name: "John Doe",
phone: "7878787878"
}
Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.
LinkedIn