2016-10-31 5 views
-1

Ich habe ein Objekt namens "Jarz" erstellt. Dann fügte er ein Objekt namens "Katze" hinzu. Dann machte ich eine Funktion, um innerhalb des Jarz-Objekts nach einem Objekt namens 'cat' zu suchen, das funktioniert. Für jedes Objekt nach 'cat', das ich zu 'Jarz' hinzufüge, findet die Funktion es jedoch nicht in der Suche. Nur der erste Lauf funktioniert überhaupt. Hier ist der Code:Objektsuche funktioniert nur zum ersten Mal

var Jarz = {}; 

Jarz['cat'] = {}; 

Hier ist die Funktion:

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; 
    } 
} 
} 

Wenn ich es auf das erste Objekt 'Katze' führen Sie es gibt true zurück. Aber jedes obj, das ich danach mache, gibt false zurück. ie:

Ich kann nicht finden, was hier fehlt. Jede Hilfe wird geschätzt, danke.

+6

Verschieben 'Rückkehr false' zu ​​nach der' for' Schleife. –

+1

Yup das ist es. Es überprüft das erste, und da es nicht übereinstimmt (weil es jetzt Hut, nicht Katze ist), gibt es false zurück – Jayce444

+2

Beachtet auch, dass 'Jarz.hasOwnProperty ('Hut');' scheint genau das zu tun, was Sie auch wollen – ASDFGerte

Antwort

-1

Sein, weil, wenn Sie es mit Hut nennen, wird es zunächst für Katze überprüft, wie es falsch ist Ihre von der Schleife zurückkehrt, so wird es nicht weiter ausführen für Hut überprüfen

Änderung dieser zu

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; 
 
}

this helps

Verwandte Themen