2017-06-29 2 views
1

Ich habe ein Problem mit einfachen Skript. Ich habe ein Modell namens 'FeatureFlag', das eine Baumstruktur mit Bezug auf Eltern und Kinder ist. Ich habe auch ein Objekt namens TreeBuilder, das aus einer Liste von FeatureFlag-Elementen einen Baum erstellt.JavaScript stoppt Schleifenausführung nach dem Drücken auf Array

Hier ist mein Modell:

export class FeatureFlag { 
    private _id: number; 
    private _parent: FeatureFlag; 
    private _children: FeatureFlag[] = []; 

    set id(id:number) { 
     this._id = id 
    } 

    set parent(parent:FeatureFlag) { 
     this._parent = parent 
    } 

    get parent() : FeatureFlag { 
     return this._parent 
    } 

    set children(children:FeatureFlag[]) { 
     this._children = children 
    } 

    get children() : FeatureFlag[] { 
     return this._children 
    }      
} 

und problematische Methode build() in TreeBuilder:

public build() { 
    for(let element of this.data) { //this.data is an array of dict [{node,parent}] 
     let found = this.findNode(element.parent) //searches in tree for node with id 'element.parent' 

     if(found) { //if parent node has been found   
      //found.children.push(element.node) //add current node to its children 
      console.log(found) //print found 
     }   
    } 
} 

Wenn Leitung:

found.children.push(element.node) 

kommentiert wird, Konsole druckt alle gefunden Eltern . Es ist okay. Wenn die Zeile jedoch unkommentiert ist, wird console.log nur einmal gedruckt - ein erster gefundener Parent. Warum passiert das?

Grüße

+0

Keine Fehler in Ihrer Konsole? – Amy

+0

@Amy Keine Fehler :( –

+0

_ "Hier ist mein Modell" _ warum nennst du es ein Modell? Ich bin nur neugierig. – evolutionxbox

Antwort

0

Wierd! Ich würde eine Debugger-Anweisung vor dem Push platzieren und dann durchgehen, um sicherzustellen, dass es keinen Fehler gibt, der still erwischt wird. Stellen Sie außerdem sicher, dass children.push keine unbeabsichtigten Nebenwirkungen hat.

Ich vermute, dass children.push irgendwie wirft, vielleicht weil Kinder nicht definiert ist, aber Angular schluckt den Fehler. Auch, ist FindNode sicher ein FeatureFlag und nicht etwas anderes?

+0

Ist es möglich, dass ich versehentlich Druckfehler ausgeschaltet habe? Ich schrieb eine Zeile, die einen Fehler drucken sollte, aber es nicht –

+0

Stellen Sie sicher, dass Die Webkonsole wird nicht gefiltert. Auf Chrome stellen Sie sicher, dass alle Optionen ausgewählt sind. Ich würde versuchen ... fang es um und dann 'debugger; console.error (err);' Dev-Tools müssen für den Debugger geöffnet sein Statement to work. –

+0

Dies ist nicht so sehr eine Antwort als eine "debug your code" -Anweisung, die wahrscheinlich besser als Kommentar wäre. –

Verwandte Themen