繁体   English   中英

推送到数组后,JavaScript 停止循环执行

[英]JavaScript stops loop execution after push to array

我有一个简单的脚本问题。 我有一个名为“FeatureFlag”的模型,它是一个参考父级和子级的树结构。 我还有一个名为 TreeBuilder 的对象,它从 FeatureFlag 元素列表中生成一棵树。

这是我的模型:

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

TreeBuilder 中有问题的方法 build():

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

当线:

found.children.push(element.node)

被评论,控制台打印所有找到的父母。 没关系。 但是当行被取消注释时,console.log 只打印一次 - 第一个找到的父级。 为什么会这样?

问候

怪! 我会在推送之前放置调试器语句,然后逐步执行它,以确保它不会引发被静默捕获的错误。 还要确保children.push没有任何意外的副作用。

我怀疑children.push会以某种方式抛出,也许是因为未定义children,但是Angular吞没了错误。 另外,findNode是否确定返回FeatureFlag而不是其他东西?

我遇到了类似的问题:

  var errors;
    let imput_email = $('#loginEmail').val().toUpperCase();
    if (!validateEmail(imput_email)){
        $( "#loginEmail + .invalid-feedback" ).addClass( "d-block" );
        console.log("I can see this in console");
        errors.push("Kiwi");
        console.log("NOTHING IN CONSOLE");
        alert("ALERT NOT WORKING EITHER");
    }
    if (!validatePass(imput_pass)){ // this part was working before push

这里的工作只是初始化错误变量:

  var errors= [];

我可以理解,如果数组为空并且它没有任何信息表明它是一个数组,那么它就是那些“无声错误”之一。 尽管延迟了 4 年,但希望它对某人有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM