JavaScript でオブジェクトにキーが存在するかどうかをチェックする
- JavaScript で要素ダイレクトアクセスメソッドを使用してオブジェクトキーが存在するかどうかを確認する
-
in
演算子を使用して、JavaScript にオブジェクトキーが存在するかどうかを確認する -
JavaScript で
hasOwnProperty
メソッドを使用してオブジェクトキーが存在するかどうかを確認する -
ライブラリ
underscore
を使って JavaScript でオブジェクトキーの有無を調べる
このチュートリアルでは、複数の方法を使って JavaScript にキーが存在するかどうかを確認する方法を学習します。
JavaScript で要素ダイレクトアクセスメソッドを使用してオブジェクトキーが存在するかどうかを確認する
キーが存在する場合、そのキーは undefined
を返してはならません。キーが undefined
を返すかどうかを調べるには、キーに直接アクセスする必要があるが、それには object
スタイルと括弧アクセススタイルの 2つの方法があります。
以下の例では、括弧スタイルを用いてキーに直接アクセスしてキーが存在するかどうかを調べる方法を示します。
let myObject = {'mykey1': 'My Value 1', 'mykey2': 'My Value 2'};
function isKeyExists(obj, key) {
if (obj[key] == undefined) {
return false;
} else {
return true;
}
}
let result0 = isKeyExists(myObject, 'mykey0')
console.log('Check for the non-existing key, is key exists > ' + result0)
let result1 = isKeyExists(myObject, 'mykey1')
console.log('Check for the existing key, is key exists > ' + result1)
出力:
Check for the non-existing key, is key exists > false
Check for the existing key, is key exists > true
ダイレクトアクセスでキーの有無を確認するその他のスタイルは、オブジェクトスタイルを使用しています。次の例では、JavaScript でそのキーが存在するかどうかをチェックする方法を紹介します。
let myObject = {mykey1: 'My Value 1', mykey2: 'My Value 2'};
let result = myObject.mykey0 != undefined
console.log('Is myKey0 exists ? ' + result)
let result1 = myObject.mykey1 != undefined
console.log('Is myKey1 exists ? ' + result1)
出力:
Is myKey0 exists ? false
Is myKey1 exists ? true
直接キーアクセスを使って undefined
をチェックする欠点の一つは、キーの値が undefined
と等しくなる可能性があることです。この方法の問題点を示すために、次の例を見てみましょう。
let myObject = {mykey0: undefined, mykey1: 'My Value 1'};
let result = myObject.mykey0 != undefined
console.log('Is myKey0 exists? ' + result)
let result1 = myObject.mykey1 != undefined
console.log('Is myKey1 exists? ' + result1)
出力:
Is myKey0 exists? false
Is myKey1 exists? true
上記の場合の解決策は、プロパティを未定義の値で初期化したいときに undefined
を代入することはせず、代わりに null
で初期化することです。
もしどうしても undefined
の値を使ってキーを初期化したい場合は、in
演算子、hasOwnProperty
メソッド、または underscore
ライブラリの _.has
メソッドを使用するべきです。
in
演算子を使用して、JavaScript にオブジェクトキーが存在するかどうかを確認する
in
演算子は、ターゲットオブジェクトにキーが見つからなかった場合に false
を返し、見つかった場合には true
を返すために単純に使われます。
let myObject =
{favoriteDish: 'Spaghetti', language: 'English'}
function isKeyExists(obj, key) {
return key in obj;
}
console.log(
'Does language key exists? ' + isKeyExists(myObject, 'language'))
console.log(
'Does nationality key exists? ' + isKeyExists(myObject, 'nationality'))
出力:
Does language key exists? true
Does nationality key exists? false
JavaScript で hasOwnProperty
メソッドを使用してオブジェクトキーが存在するかどうかを確認する
オブジェクトに特定のプロパティキーが含まれているかどうかを調べるもう一つの方法は hasOwnProperty
メソッドを使用することです。次の例では、hasOwnProperty
メソッドを使用する方法を示します。
let myObject =
{favoriteDish: 'Spaghetti', language: 'English'}
function isKeyExists(obj, key) {
return obj.hasOwnProperty(key);
}
console.log(
'Does the object have language key? ' +
isKeyExists(myObject, 'language'))
console.log(
'Does the object have nationality key? ' +
isKeyExists(myObject, 'nationality'))
出力:
Does the object have language key? true
Does the object have nationality key? false
ライブラリ underscore
を使って JavaScript でオブジェクトキーの有無を調べる
既に underscore
ライブラリのメソッドを利用している場合は _.has()
メソッドを利用することができます。
let myObject =
{favoriteDish: 'Spaghetti', language: 'English'}
console.log(
'Check using underscore library if the object has language key? ' +
_.has(myObject, 'language'))
console.log(
'Check using underscore library if the object has nationality key? ' +
_.has(myObject, 'nationality'))
出力:
Check using underscore library if the object has language key? true
Check using underscore library if the object has nationality key? false
ライブラリはここからインポートできます。