2016-10-31 8 views
-1

"Jarz"というオブジェクトを作成しました。次に、 'cat'という名前のオブジェクトを追加しました。次に、Jarzオブジェクト内で 'cat'というオブジェクトを検索する機能を作成しました。これは機能します。しかし、 'cat'の後のすべてのオブジェクトに対して 'Jarz'に追加すると、関数は検索でそれを見つけられません。最初の試合だけが今までに動作します。ここでは、コードは次のようになります。ここではオブジェクト検索は初めてのみ

var Jarz = {}; 

Jarz['cat'] = {}; 

は関数である。

function doesObjExist(ObjName){ 
var tmpArr = Object.keys(Jarz); 
for(var i = 0; i < tmpArr.length; i++){ 
    if(tmpArr[i] === ObjName){ 
     return true; 
    } 

    else { 
     return false; 
    } 
} 
} 

私は最初のオブジェクトの猫の上でそれを実行すると、それはtrueを返します。しかし、私が後で作るobjはfalseを返します。すなわち:

Jarz['hat'] = {}; 
doesObjExist('hat') // returns false 

ここでは見つからないものがあります。どんな助けでも感謝しています。

+6

移動 '' for'ループの後にfalse'の戻るのに役立ちます。 –

+1

それだけです。それは最初のものをチェックしているので、それは一致しないので(猫ではなく、帽子ではなく)偽を返しています – Jayce444

+2

'Jarz.hasOwnProperty( 'hat');'あなただけでも好きなことをするように見えます – ASDFGerte

答えて

-1

そのあなたは帽子とそれを呼び出すとき、それは文句を言わない帽子

var Jarz = {}; 
 

 
Jarz['cat'] = {}; 
 
console.log(doesObjExist('cat')); 
 
Jarz['hat'] = {}; 
 
console.log(doesObjExist('hat')); 
 

 
function doesObjExist(ObjName) { 
 
    var tmpArr = Object.keys(Jarz); 
 
    var count = 0; 
 
    for (var i = 0; i < tmpArr.length; i++) { 
 
    if (tmpArr[i] === ObjName) { 
 
     return true; 
 
    } else { 
 
     count++; 
 
    } 
 
    } 
 
    if (count >= tmpArr.length) 
 
    return false; 
 
}
への変更、これをチェックするために、さらに実行するので、それはあなたがループから戻っ偽であるとして、それは猫のために最初にチェックしているので、

希望これは

関連する問題