JavaScriptでオブジェクトに特定のプロパティがあるかどうかを確認するにはどうすればよいですか?


1487

JavaScriptでオブジェクトに特定のプロパティがあるかどうかを確認するにはどうすればよいですか?

検討してください:

x = {'key': 1};
if ( x.hasOwnProperty('key') ) {
    //Do this
}

それが最善の方法ですか?


21
全員の回答を使用してjsperfテストを作成し、どれが最も速いかを確認しました:jsperf.com/dictionary-contains-key
styfle

(オブジェクトの 'propertyName')?'property is there': 'property is not there'
Mohan Ram

1
jsperfテストを@styfleに感謝します。inそして、私にとっては他のものよりもずっと遅くhasOwnProperty出てきました(98%遅い)。遅くなることに驚いてはいませんが、驚いています。hasOwnPropertyin
evanrmurphy

回答:


1424

私は与えられた答えに本当に困惑しています-それらのほとんどはまったくまったく間違っています。もちろん、未定義、null、またはfalseの値を持つオブジェクトプロパティを持つことができます。したがって、プロパティチェックを単純に減らすtypeof this[property]か、さらに悪い場合にx.keyは、完全に誤解を招く結果をもたらします。

それはあなたが探しているものに依存します。オブジェクトにプロパティが物理的に含まれているかどうかを知りたい場合(そして、プロトタイプチェーンのどこかから来ていない場合)object.hasOwnPropertyは、その方法です。最新のブラウザはすべてそれをサポートしています。(古いバージョンのSafari-2.0.1以前では欠けていましたが、これらのバージョンのブラウザーはめったに使用されません。)

あなたが探しているものがオブジェクトに反復可能なプロパティがある場合(オブジェクトのプロパティを反復すると表示されます)、次のprop in objectようにします:希望する効果が得られます。

使用することhasOwnPropertyはおそらくあなたが望んでいることであり、フォールバック方法が必要かもしれないことを考慮して、私はあなたに次の解決策を提示します:

var obj = {
    a: undefined,
    b: null,
    c: false
};

// a, b, c all found
for ( var prop in obj ) {
    document.writeln( "Object1: " + prop );
}

function Class(){
    this.a = undefined;
    this.b = null;
    this.c = false;
}

Class.prototype = {
    a: undefined,
    b: true,
    c: true,
    d: true,
    e: true
};

var obj2 = new Class();

// a, b, c, d, e found
for ( var prop in obj2 ) {
    document.writeln( "Object2: " + prop );
}

function hasOwnProperty(obj, prop) {
    var proto = obj.__proto__ || obj.constructor.prototype;
    return (prop in obj) &&
        (!(prop in proto) || proto[prop] !== obj[prop]);
}

if ( Object.prototype.hasOwnProperty ) {
    var hasOwnProperty = function(obj, prop) {
        return obj.hasOwnProperty(prop);
    }
}

// a, b, c found in modern browsers
// b, c found in Safari 2.0.1 and older
for ( var prop in obj2 ) {
    if ( hasOwnProperty(obj2, prop) ) {
        document.writeln( "Object2 w/ hasOwn: " + prop );
    }
}

上記は動作するクロスブラウザのソリューションでhasOwnPropertyあり、1つの注意点があります。同じプロパティがプロトタイプとインスタンスにある場合を区別することはできません。単にプロトタイプからのものであると想定しているだけです。状況に応じて、より寛大または厳格に変更することもできますが、少なくともこれはより役立つはずです。


5
@grantwparks単純なスライダープラグインを構築していて、オプション項目の存在を確認したい場合、これは実際に必要以上のものになる可能性があります。あなただけのようなことができvar w = opts.w || 100;ます。しかし、ある種のライブラリーを使用している場合は、いくつかの部分でもう少し遠くに行く必要があるかもしれません。
ハリルオズギュル

@ kralco626:はい、今日、hasOwnProperty()を使用するのはかなり安全だと感じていますが、本当に安全なクロスブラウザソリューションを使用するには、Johnを使用してください。
ジェイコブ

どの程度の一時的な変更__proto__はnullに?シンプルな実装:(function hasOwnProperty(obj, prop) { var temp = obj.__proto__; obj.__proto__ = null; var ret = prop in obj; obj.__proto__ = temp; return ret; }ケースをobj.constructor.prototype追加する必要があります)。
平均Joe

2
@Kasztan __proto__は非標準であり、一部の古いブラウザでは機能しません。そしてObject.getPrototypeOf、標準が最近追加されたとしても、既存のオブジェクトのプロトタイプを変更することはできません。
Matt Browne 2013

13
for(prop in object)ループは可算のプロパティを反復します。ただし、列挙可能かどうかに関係なく、プロトタイプチェーンのどこかにプロパティがあるかprop in objectどうかobjectを確認しますprop
Oriol

283

Underscore.jsまたは(より良いですlodash

_.has(x, 'key');

これはを呼び出しますがObject.prototype.hasOwnProperty、(a)タイプの方が短く、(b)「安全な参照」を使用しますhasOwnProperty(つまり、hasOwnProperty上書きされても機能します)。

特に、lodashは次の_.hasように定義します。

   function has(object, key) {
      return object ? hasOwnProperty.call(object, key) : false;
   }
   // hasOwnProperty = Object.prototype.hasOwnProperty

52
質問が複雑なDOM操作に関するものであり、答えが「jQueryを使用する」である場合でも、「このライブラリを追加する」が人気のあるソリューションであることはめったにないためだと思います。
Winfield Trail

11
@sudowned、ありがとうございます。ちなみに、lodashライブラリ全体を含めることを嫌う場合は、サブコンポーネントをコンパイルするか、縮小すると175バイトにコンパイルされる関数npm install lodash.hasだけでnpmモジュールを公開できますhaslodash.has/index.js非常に人気があり、信頼できるライブラリがどのように機能するかを確認するのにも洞察力があります。
ブライアンM.ハント

9
lodashのバージョンはこれで動作します: .has(undefined, 'someKey') => falsewhile underscoreが返されますundefined
Brad Parks

13
lodash「まだ別の」依存関係として追加することを熱望しているすべての人にとって:これは、この種のもののためのかなり一般的な(最も一般的ではないにしても)ライブラリです。ホイールの再発明を楽しんでください。
Priidu Neemre

11
ホイールを再発明したい場合でも、既存のホイールをチェックアウトすることは悪い考えではありません。
AturSams 2017

147

どう?

var x = {'key': 1};

if ('key' in x) {
    console.log('has');
}

13
注意してください、それは狭い意味で「オブジェクト」で動作するので、{}として宣言されるか、コンストラクタを使用して作成され、配列やプリミティブを受け入れません。OPがそれを要求しているわけではありませんが、他のいくつかの回答は、より幅広い手法(配列、文字列などを
扱う

@РСТȢѸФХѾЦЧШЩЪЫЬѢѤЮѦѪѨѬѠѺѮѰѲѴおかげでそのアウトを指し示すために(受け入れられた答えは1が使用する理由の詳細には触れませんin演算子かないことにも注意してください。inオペレータが優れたブラウザをサポートしていIE 5.5+, Chrome 1.0+, Firefox 1.0+, Safari 3.0+ stackoverflow.com/questions/2920765/...
エイドリアンのBe

2
オペレーターinは、プロトタイププロパティに対してもチェックしますが、hasOwnPropertyユーザー定義のプロパティのみを繰り返します。参考:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
adi518

2
'key' in x やる配列で仕事を。証明: stackoverflow.com/questions/33592385/...
CosmoMyzrailGorynych

最良かつ最短のオプションのようです
user365314

132

注意:以下は、strictモードのおかげで、現在ではほとんど使用されていませんhasOwnProperty。正しい解決策は、strictモードを使用し、を使用してプロパティの存在を確認することですobj.hasOwnProperty。この回答、少なくとも広く実装されているのと同じくらい、これらの両方に先行しています(そうです、それは古いです)。歴史的なメモとして次をとってください。


undefined(残念ながら)そうではないことを覚えておいてくださいあなたがstrictモードを使用していない場合はJavaScriptで予約語。したがって、誰か(明らかに他の誰か)がコードを再定義してコードを破壊するという大胆なアイデアを持つ可能性があります。

したがって、より堅牢な方法は次のとおりです。

if (typeof(x.attribute) !== 'undefined')

反対に、この方法ははるかに冗長であり、速度も遅くなります。:-/

一般的な代替策は、それundefined実際に未定義であることを確認することです。たとえばundefined、値が渡されないと呼ばれる追加のパラメーターを受け入れる関数にコードを配置します。値が渡されないようにするには、すぐに自分で呼び出すことができます。例:

(function (undefined) {
     your code 
    if (x.attribute !== undefined)
         mode code 
})();

6
ちょうど好奇心旺盛ですが、void 0は正準を返すように定義されているのでundefined、できますx.attribute !== void 0か?
ブライアンM.ハント

1
ブライアン:私は専門家ではないが、それを正しく理解するための賢い方法のように思える。
クリストファー・スミス

37
有名な「他の誰か」が未定義のものを再定義した場合、私は最良の行動方針はそのコードを書き直すことだと思います。
Oskar Holmkratz 2013年

3
クロージャ内の作業であり、固体未定義VARを持っている最高の、そして比類のない関数のシグネチャがあります:(function (undefined) { // undefined is actually undefined here })();
bgusach

1
@evanrmurphyそれを使わないでください、それは深刻に時代遅れです(私の回答の冒頭にある注を参照してください)。
Konrad Rudolph

55
if (x.key !== undefined)

アーミン・ロナッチャーはすでに私を打ち負かしているようですが

Object.prototype.hasOwnProperty = function(property) {
    return this[property] !== undefined;
};

x = {'key': 1};

if (x.hasOwnProperty('key')) {
    alert('have key!');
}

if (!x.hasOwnProperty('bar')) {
    alert('no bar!');
}

Konrad RudolphArmin Ronacherが指摘しように、より安全ですが遅いソリューションがは次のようになります。

Object.prototype.hasOwnProperty = function(property) {
    return typeof this[property] !== 'undefined';
};

2
それで十分だとは思いません。x.hasOwnProperty('toString') === true;
ジョーシモンズ

反対するのではなく、理解することを求めます。x.hasOwnPropertyがブール値trueまたはfalse以外の何かを返す点はありますか?そうでない場合、投稿されたコードは毎回機能するはずです。おそらくメソッドがオーバーライドされたと思いますが、オーバーライドするメソッドを知らなければ、結果に依存することは信頼できません。
enobrev 2013

1
誤解があると思います。つまり、あなたのメソッドを使用すると、「toString」は独自のプロパティであると言えますが、そうではありません。
ジョーシモンズ

3
Object.prototype組み込みの正しいがすでにありますhasOwnProperty。不適切な実装で上書きする(1.プロパティは値undefined、2を持つことができます。これにより、継承されたプロパティに誤検知が発生します)のは、ひどく悪い考えです。不正解は削除でき、削除する必要があります。Resigの回答を見た '08年9月にそれができるかどうかはわかりません。
TJクラウダー2016

36

in演算子を使用して、プロパティがオブジェクトに存在するかどうかを確認できます。

x = {'key': 1};
alert("key" in x);

ループを使用してオブジェクトのすべてのプロパティをfor - inループし、特定のプロパティを確認することもできます。

for (prop in x) {
    if (prop == "key") {
        //Do something
    }
}

列挙できないプロパティはfor-inループに表示されないため、このオブジェクトプロパティが列挙可能かどうかを検討する必要があります。また、列挙可能なプロパティがプロトタイプの列挙できないプロパティをシャドウしている場合、Internet Explorer 8には表示されません。以前。

列挙可能かどうかにかかわらず、すべてのインスタンスプロパティのリストが必要な場合は、

Object.getOwnPropertyNames(x);

これは、オブジェクトに存在するすべてのプロパティの名前の配列を返します。

最後に、typeof演算子を使用して、オブジェクトプロパティのデータ型を直接確認できます。

if (typeof x.key == "undefined") {
    alert("undefined");
}

プロパティがオブジェクトに存在しない場合、文字列undefinedを返します。それ以外の場合は、適切なプロパティタイプを返します。ただし、これは、オブジェクトにプロパティがあるかどうかを確認する有効な方法とは限らないことに注意してください。プロパティが未定義に設定されている場合があるためです。typeof x.keyでも、キーはまだオブジェクト内)。

更新:未定義のJavaScriptプロパティと比較することで、プロパティが存在するかどうかを確認できます

if (x.key === undefined) {
    alert("undefined");
}

キーが特にundefinedxオブジェクトに設定されていない限り、これは機能するはずです


更新部分が間違っています。こちらをご覧ください:jsfiddle.net/sbgg04yg
Number945

JavaScriptの未定義のプロパティとの比較が失敗する可能性のあるシナリオを示すように更新
goonerify

31

ここでいくつかの混乱を切り抜けましょう。最初に、hasOwnPropertyすでに存在すると仮定して単純化しましょう。これは、現在使用されているブラウザの大多数に当てはまります。

hasOwnProperty渡された属性名がオブジェクトに追加されている場合はtrueを返します。これは、割り当てられている実際の値とは完全に独立しています undefined

したがって:

var o = {}
o.x = undefined

var a = o.hasOwnProperty('x')  // a is true
var b = o.x === undefined // b is also true

しかしながら:

var o = {}

var a = o.hasOwnProperty('x')  // a is now false
var b = o.x === undefined // b is still true

問題は、プロトタイプチェーンのオブジェクトが未定義の値を持つ属性を持っているときに何が起こるかです。hasOwnPropertyそれについては偽であり、そうです!== undefined。まだ、for..inそれを列挙にリストします。

要点は__prototype__、特定の識別子がオブジェクトまたはそのプロトタイプチェーン内の何にもアタッチされていないことを特定するためのクロスブラウザーの方法がないことです(Internet Explorerはを公開していません)。


24

プロパティを検索する場合は、「NO」。あなたが欲しい:

if ('prop' in obj) { }

一般に、プロパティがプロトタイプまたはオブジェクトに由来するかどうかを気にする必要はありません。

ただし、サンプルコードでは「キー」を使用したため、オブジェクトをハッシュとして処理しているように見えます。その場合、答えは理にかなっています。すべてのハッシュキーはオブジェクトのプロパティであり、プロトタイプによって提供される余分なプロパティを回避します。

ジョン・レジグの答えは非常に包括的でしたが、私はそれが明確ではないと思いました。特にobjで「 'prop'」を使用する場合。


1
inオペレーターは優れたブラウザーサポートを備えていることに注意してくださいIE 5.5+, Chrome 1.0+, Firefox 1.0+, Safari 3.0+ 。stackoverflow.com/questions/2920765/…
Adrien Be

in演算子の使用に関する別のコメントで指摘されているように、「これは狭義の「オブジェクト」で機能するため、{}として宣言されるか、コンストラクターを使用して作成されます。配列またはプリミティブを受け入れません。OPがそれを要求したわけではありませんが、他のいくつかの回答は、より幅広い手法(配列、文字列など
Adrien Be

1
コメントの原因私はコメントなしで2度反対投票されました。しかし、私はまだ私の答えが好きです。たぶんそうした人は、すべての種類のプロパティをテストするためのすべての方法について「包括的な」回答を求めていたのかもしれません。Re:Adrien Be、数えられないプロパティは一般的なユーザースコープを対象としたものではないため、概念的には「in」で結構です;)
Gerard ONeill

16

単純なオブジェクトをテストするには、以下を使用します。 if (obj[x] !== undefined)

どのオブジェクトタイプかわからない場合は、次のように使用します。 if (obj.hasOwnProperty(x))

他のすべてのオプションは遅くなります。

詳細

Nodejsでの100,000,000サイクルのパフォーマンス評価と、ここで他の人が提案する5つのオプション:

function hasKey1(k,o) { return (x in obj); }
function hasKey2(k,o) { return (obj[x]); }
function hasKey3(k,o) { return (obj[x] !== undefined); }
function hasKey4(k,o) { return (typeof(obj[x]) !== 'undefined'); }
function hasKey5(k,o) { return (obj.hasOwnProperty(x)); }

評価により、オブジェクトのプロトタイプチェーンとオブジェクト自体を具体的に確認したくない場合を除き、一般的な形式は使用しないでください。使用 if (X in Obj)... 例によっては、2〜6倍遅くなります

hasKey1 execution time: 4s 510.427785ms
hasKey2 execution time: 0s 904.374806ms
hasKey3 execution time: 0s 760.336193ms
hasKey4 execution time: 0s 935.19901ms
hasKey5 execution time: 2s 148.189608ms

結論として、Objが必ずしも単純なオブジェクトではなく、オブジェクトのプロトタイプチェーンのチェックを避け、xがObjによって直接所有されていることを確認する場合は、 'if(obj.hasOwnProperty(x))...'を使用します。

それ以外の場合は、単純なオブジェクトを使用していて、オブジェクトのプロトタイプチェーンを気にしない場合if (typeof(obj[x]) !== 'undefined')...は、使用するのが最も安全で最速の方法です。

単純なオブジェクトをハッシュテーブルとして使用し、変なことをしない場合は、if (obj[x])...はるかに読みやすくなるので使用します。

楽しんで。


15

はい、それは:)と呼ばれるプロパティがObject.prototype.hasOwnProperty.call(x, 'key')あればうまくいくはずですが、あなたもできると思います:)xhasOwnProperty

しかし、それは自身のプロパティをテストします。継承される可能性のあるプロパティがあるかどうかを確認する場合は、を使用できますtypeof x.foo != 'undefined'


14
if (typeof x.key != "undefined") {

}

なぜなら

if (x.key)

x.key解決する場合は失敗しますfalse(たとえば、x.key = "")。


正しくありません。次のオブジェクト試しconst x = {key: undefined};ながら、この溶液を用いてfalseを返しますx.hasOwnProperty('key')); // trueとしますReflect.has(x, 'key')); // true。プロパティは実際に存在しますが、値はundefinedです。
Wilt


10

OK、継承されたプロパティが必要でない限り、私は正しい答えを持っていたようです:

if (x.hasOwnProperty('key'))

継承されたプロパティを含めるためのその他のオプションは次のとおりです。

if (x.key) // Quick and dirty, but it does the same thing as below.

if (x.key !== undefined)

4
警告x.hasOwnProperty( 'key')はtrueになる可能性がありますが、x.key!== undefinedはtrueではありません。
AnthonyWJones 2008

4
以下のための方法間違っただろう。var x = { key: false };x.key
Mark K Cowan、

2
(x.key)がx = {key:0}のように正しくない場合、チェックに合格しません。
someUser

10

こんなことしないで object.hasOwnProperty(key))これらのメソッドは問題のオブジェクトのプロパティによって隠されている可能性があるため、考慮してください。{ hasOwnProperty: false }または、オブジェクトがnullオブジェクトである可能性があります。(Object.create(null))

最善の方法は、以下を実行することですObject.prototype.hasOwnProperty.call(object, key)

const has = Object.prototype.hasOwnProperty; // cache the lookup once, in module scope.
/* or */
import has from 'has'; // https://www.npmjs.com/package/has
// ...
console.log(has.call(object, key));

3
私はこの方法に同意します。パフォーマンスを維持しながらこれが最も安全な方法であるため、これは受け入れられる答えになるはずです!eslint.org/docs/rules/no-prototype-builtinsは、「たとえば、悪意のあるクライアントがJSON値を送信する可能性があるため、クライアントからのJSON入力を解析し、結果のオブジェクトに対して直接hasOwnPropertyを呼び出すのは安全ではありません。 {"hasOwnProperty":1}のようにし、サーバーをクラッシュさせます。 "
アルマン、

7

別の比較的簡単な方法は、を使用することObject.keysです。これは、array配列のすべての機能を取得することを意味するを返します。

var noInfo = {};
var info = {something: 'data'};

Object.keys(noInfo).length //returns 0 or false
Object.keys(info).length //returns 1 or true

私たちは素晴らしいブラウザサポートのある世界にいますが。この質問はとても古いので、私はこれを追加したいと思いました:これはJS v1.8.5から安全に使用できます


そうですが、情報に何か別の名前のプロパティがあるかどうかを知りたい場合はどうでしょうか。これは、OPが探しているものだと思います。
Victorio Berra 2015年

2
その後、あなたはやります Object.keys(info).indexOf('someotherthing') !== -1
ヒッピートレイル

7

hasOwnProperty " in演算子とは異なり、オブジェクトにそのオブジェクトの直接プロパティとして指定されたプロパティがあるかどうかを判断するために使用できます。、このメソッドはオブジェクトのプロトタイプチェーンをチェックダウンしません。」

したがって、おそらくあなたの質問のように、オブジェクト自体に直接接続されているプロパティが存在するかどうかを判断するhasOwnPropertyを使用したくないでしょう

主に使用したいプロトタイプチェーンにプロパティが存在するかどうかを確認するには、次のようにします。

if( prop in object ){ // do something }

これがお役に立てば幸いです。


「「in」演算子を使用してmyObjectの「prop」を検索することはできません」
Victorio Berra

3

大規模な反対投票のリスクがあるため、ここに特定のケースのための別のオプションがあります。:)

オブジェクトのメンバーをテストし、それが以下以外に設定されているかどうかを知りたい場合:

  • ヌル
  • 未定義
  • 0 ...

それからあなたは使うことができます:

var foo = {};
foo.bar = "Yes, this is a proper value!";
if (!!foo.bar) {
        // member is set, do something
}

コンパクトで便利
Frederik Witte

リンターはこれを好きではありません:eslint.org/docs/rules/no-extra-boolean-cast
Wilt

2

リフレクトを備えたECMAスクリプト6ソリューション。次のようなラッパーを作成します。

/**
Gets an argument from array or object.
The possible outcome:
- If the key exists the value is returned.
- If no key exists the default value is returned.
- If no default value is specified an empty string is returned.
@param obj    The object or array to be searched.
@param key    The name of the property or key.
@param defVal Optional default version of the command-line parameter [default ""]
@return The default value in case of an error else the found parameter.
*/
function getSafeReflectArg( obj, key, defVal) {
   "use strict";
   var retVal = (typeof defVal === 'undefined' ? "" : defVal);
   if ( Reflect.has( obj, key) ) {
       return Reflect.get( obj, key);
   }
   return retVal;
}  // getSafeReflectArg

これは、ES6以上をターゲットとする場合に最適な方法ですか?
ヒッピートレイル2017

1
Imhoそれは最短で最も単純な答えですが、実行コードの中で最速ではないかもしれません。しかし、速度は(もはや)問題ではありません。
2017

2

オブジェクトには「hasOwnProperty」メソッドが存在しますが、オブジェクトがnullであるか、次のようなオブジェクトにプロパティが存在する可能性があるため、このメソッドを直接呼び出すことはお勧めしません。 { hasOwnProperty: false }

だからより良い方法は:

// good
var obj = {"bar": "here bar desc"}
console.log(Object.prototype.hasOwnProperty.call(obj, "bar"));

// best
const has = Object.prototype.hasOwnProperty; // cache the lookup once, in module scope.
console.log(has.call(obj, "bar"));


2

次のアプローチを使用できます-

var obj = {a:1}
console.log('a' in obj)               //1
console.log(obj.hasOwnProperty('a'))  //2
console.log(Boolean(obj.a))         //3

次のアプローチの違いは次のとおりです-

  1. 1番目と3番目のアプローチでは、オブジェクトを検索するだけでなく、プロトタイプチェーンも検索します。オブジェクトにプロパティがないが、そのプロトタイプチェーンにプロパティが存在する場合は、trueになります。

 var obj = {
      a:2,
      __proto__ :{b:2}
    }

    console.log('b' in obj)
    console.log(Boolean(obj.b))

  1. 2番目のアプローチでは、独自のプロパティのみをチェックします。例-

var obj = {
      a:2,
      __proto__ :{b:2}
    }

    console.log(obj.hasOwnProperty('b'))

  1. 1番目と3番目の違いは、未定義の値を持つプロパティがある場合、3番目のアプローチは最初にtrueを与える一方でfalseを与えることになります。

var obj = {
      b : undefined
    }
    console.log(Boolean(obj.b))
    console.log('b' in obj);


1

メソッドを使用する必要がありますobject.hasOwnProperty(property)。オブジェクトにプロパティがある場合はtrueを返し、オブジェクトがない場合はfalseを返します。


-1

チェックするキーが変数に格納されている場合は、次のようにチェックできます。

x = {'key': 1};
y = 'key';
x[y];

これは概念的にどのようにx ['key']をテストするだけで異なるのですか?そして、それはx.keyとどう違うのですか?他のコースの配列にアクセスするときよりも...
ジェラルド・オニール

-1

できるのになぜ複雑すぎるのか:

var isProperty =  (objectname.keyname || "") ? true : false;

ほとんどの場合、シンプルで明確です...


最も単純なものはvar isProperty = !! objectname.keyname;です。
John

オブジェクトが次のような場合、はのプロパティであるconst objectName = { keyname: false };ため、trueを返す必要keynameがありますobjectname。しかし、値がfalseであるため、このロジックではfalseを返します。
Wilt、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.