JavaScript の mot in 演算子

Shraddha Paghdar 2023年10月12日
JavaScript の mot in 演算子

オブジェクトは、JavaScript で最も一般的に使用される Key-Value プロパティです。特定のプロパティが存在するかどうかを確認するために、JavaScript にはいくつかの可能性があります。今日の記事では、JavaScript のオブジェクトに特定のプロパティが存在するかどうかを確認する方法を紹介します。

JavaScript でプロパティが存在するかどうかを確認する

プロパティは、オブジェクトに格納されているキー値とペアになっています。オブジェクトには、そのような多くのプロパティを含めることができます。JavaScript に特定のプロパティが存在するかどうかは、演算子 id in object または Object.prototype.hasOwnProperty() によって決定されます。

JavaScript の Object.prototype.hasOwnProperty()

これは、指定されたプロパティがオブジェクトに属しているかどうかを確認するために JavaScript によって提供される組み込みメソッドです。オブジェクトを繰り返し、結果に応じてブール値を返します。

構文:

Object.prototype.hasOwnProperty(prop);

この関数は、string 形式の入力として prop を取ります。これは必須パラメーターです。このメソッドは、値に関係なく、指定されたプロパティがオブジェクトに存在するかどうかのみをチェックします。プロパティ値が null または undefined の場合でも、true を返します。配列はオブジェクトの子孫であるため、このメソッドは Array で呼び出すこともできます。詳細については、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 の 2つのプロパティを定義しました。inputObject.hasOwnProperty('name') を渡すと、inputObject に name プロパティが存在するかどうかがチェックされます。反対の条件をチェックしたい場合は、!を追加してください条件の前に、それはチェックを否定します。たとえば、オブジェクト内に存在しない場合は、新しいプロパティを追加できます。上記のコードによって与えられた出力は、以下に見ることができます。

出力:

true
{
  email: "Johndoe@gmail.com",
  id: 42,
  name: "John Doe"
}

JavaScript の in 演算子

これは JavaScript によって提供される組み込みメソッドであり、オブジェクトまたはプロトタイプチェーンが指定されたプロパティを所有しているかどうかをチェックします。オブジェクトを繰り返し、結果に応じてブール値を返します。

構文:

prop in object

この関数は、string 形式の入力として prop を取ります。これは必須パラメーターです。このメソッドは、指定されたプロパティまたは配列インデックスがオブジェクトまたはそのプロトタイプチェーンに存在するかどうかのみをチェックします。配列はオブジェクトの子孫であるため、このメソッドは配列で呼び出すこともできます。詳細については、in 演算子メソッドのドキュメントを参照してください。

hasOwnProperty 演算子と in 演算子の主な違いは、プロパティがオブジェクト内で継承されているか、宣言されていない場合、前の演算子は false を返すことです。対照的に、in 演算子は、オブジェクトのプロトタイプチェーンで指定されたプロパティをチェックしません。たとえば、Object 基本クラスには関数として hasOwnProperty があるため、hasOwnPropertyfalse を返しますが、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 の 2つのプロパティを定義しました。inputObjectname を渡すと、name プロパティが inputObject に存在するかどうかがチェックされます。反対の条件をチェックしたい場合は、!を追加してください条件の前に、チェックを否定します。たとえば、オブジェクト内に存在しない場合は、新しいプロパティ 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