JavaScript 中的 not in 運算子

Shraddha Paghdar 2023年10月12日
JavaScript 中的 not in 運算子

物件是 JavaScript 中最常用的鍵值屬性。為了檢查某個屬性是否存在,JavaScript 提供了幾種可能性。今天的帖子將向你展示如何在 JavaScript 中檢查物件上是否存在特定屬性。

在 JavaScript 中檢查屬性是否存在

屬性與儲存在物件中的鍵值配對。一個 object 可以包含許多這樣的屬性。JavaScript 中是否存在某個屬性由操作符 id in objectObject.prototype.hasOwnProperty() 決定。

JavaScript 中的 Object.prototype.hasOwnProperty()

這是 JavaScript 提供的內建方法,用於檢查指定的屬性是否屬於 Object。它迭代物件並根據結果返回布林值。

語法:

Object.prototype.hasOwnProperty(prop);

此函式將 prop 作為 string 格式的輸入。它是一個強制性引數。此方法只檢查給定的屬性是否存在於物件中,而不管值如何。即使屬性值為 nullundefined,它也會返回 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);

在上面的程式碼塊中,我們定義了物件 idname 的兩個屬性。當你傳遞 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 方法的文件。

hasOwnPropertyin 運算子之間的主要區別在於,如果屬性是在物件內部繼承的或尚未宣告,則前一個返回 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);

在上面的程式碼塊中,我們定義了物件 idname 的兩個屬性。當你在 inputObject 中傳遞 name 時,它會檢查 inputObject 中是否存在 name 屬性。如果要檢查相反的條件,請新增!在條件之前,否定檢查。例如,你可以新增一個新屬性 phone,如果它不存在於物件中。上面的程式碼片段給出的輸出如下所示。

輸出:

true
{
  id: 42,
  name: "John Doe",
  phone: "7878787878"
}
Shraddha Paghdar avatar Shraddha Paghdar avatar

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

相關文章 - JavaScript Operator