JSオブジェクトにキーが存在するかどうかの確認


88

私は次のJavaScriptオブジェクトを持っています:

var obj = {
    "key1" : val,
    "key2" : val,
    "key3" : val
}

これと同様に、キーが配列に存在するかどうかを確認する方法はありますか?

testArray = jQuery.inArray("key1", obj);

動作しません。

このようにobjを反復処理する必要がありますか?

jQuery.each(obj, function(key,val)){}

4
js-

True;)は、私がjsのバックグラウンドを持っていないことを示しています-最初からjQueryライブラリから始めました、そして私は基本を学ぶ必要があると信じています...
user2065483 2013年

obj.has("key1")ES6を使用している場合は機能します。
ディアブロ2017年


1
@Diabloあなたはobj.hasOwnProperty("key1")ただではなく、言いたいのだと思いますhasか?
アミヌカノ2018

回答:


173

in演算子を使用します

testArray = 'key1' in obj;

補足:そこに到達したのは、実際にはjQueryオブジェクトではなく、単なるJavaScriptオブジェクトです。


4
inこのようにチェックできませんか?
SagarPPanchal 2015年

5
@SagarPanchalどういう意味ですか?のようなものtestArray = !( 'key1' in obj);
Sirko 2015年

49

これはjQueryオブジェクトではなく、単なるオブジェクトです。

hasOwnPropertyメソッドを使用して、キーを確認できます。

if (obj.hasOwnProperty("key1")) {
  ...
}

あなたはそれを使うべきではありません。遅いと言われています。最良の方法は、オブジェクトで「キー」を使用することです
hannad rehman 2017年

@hannadrehmanそれが言及されているドキュメント/記事への参照を教えていただけますか?:)
Nabin 2017年

1
@Fan_of_Martijn_Pieters私は厳格なESlintルールセットに従います。そこにはルールの一つとして記載されています。eslint.org/docs/rules/no-prototype-builtins
hannad rehman 2017年

@hannadrehmanオブジェクト内のキーを使用しないでください。明らかに間違っている可能性があります。これが最善の方法です。

null値のキーを検出する場合、これは機能しないため、反対票を投じました。たとえば、obj ["key1"] == nullの値(つまり、key1がobjに存在し、その値がnull)の場合、key1がobjにないという誤った結果が返されます。
user1258361

7
var obj = {
    "key1" : "k1",
    "key2" : "k2",
    "key3" : "k3"
};

if ("key1" in obj)
    console.log("has key1 in obj");

================================================== =======================

別のキーの子キーにアクセスするには

var obj = {
    "key1": "k1",
    "key2": "k2",
    "key3": "k3",
    "key4": {
        "keyF": "kf"
    }
};

if ("keyF" in obj.key4)
    console.log("has keyF in obj");

1
または、if (!("key1" in obj)) { console.log("no key1 in obj"); }
キーが

3

上記の答えは良いです。しかし、これも良くて便利です。

!obj['your_key']  // if 'your_key' not in obj the result --> true

これは、ifステートメントで特別な短いスタイルのコードに適しています。

if (!obj['your_key']){
    // if 'your_key' not exist in obj
    console.log('key not in obj');
} else {
    // if 'your_key' exist in obj
    console.log('key exist in obj');
}

注:キーがnullまたは ""に等しい場合、 "if"ステートメントは間違っています。

obj = {'a': '', 'b': null, 'd': 'value'}
!obj['a']    // result ---> true
!obj['b']    // result ---> true
!obj['c']    // result ---> true
!obj['d']    // result ---> false

したがって、キーがobjに存在するかどうかを確認する最良の方法は次のとおりです。'a' in obj


1

あなたはこれを試すことができます:

const data = {
  name : "Test",
  value: 12
}

if("name" in data){
  //Found
}
else {
  //Not found
}


0

最も簡単な方法は

const obj = {
  a: 'value of a',
  b: 'value of b',
  c: 'value of c'
};

if(obj.a){
  console.log(obj.a);
}else{
  console.log('obj.a does not exist');
}


場合はa、空の文字列、ゼロまたはNULLのいずれかである、それはまだ鍵がいても、「obj.aが存在しない」を返しますaが存在しません。
ツイストウィスパー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.