0

我需要解析以下对象。

我实现的代码 (2) 部分工作。请参阅(1)中的评论,如果您能给我一些提示如何修复代码(2),我将不胜感激。

我的目标是在根对象中有 errors 键时调用 parser_2。
我正在使用 jquery 和下划线。


(1)

parser({
    "errors": ["errro1"], // it should be passed to parser_2
                          // with the code I implemented it works
    "children": {
        "points": {
            "errors": ["This value should not be blank.", "error2"]
        },
        "message": [], // it should be passed to parser
                       // with the code I implemented it does not work
                       // because it calls parser_2 instead of parser or nothing!
        "recipient_id": {
            "errors": ["This value should not be blank."]
        }
    }
});

(2)

parser = function (object) {
    _.each(object, function (object, name) {
        if (object.errors) {
            var inputElement = element.find('[name="' + name + '"]');
            //other code
        } else if ($.isArray(object)) {
            parser_2(object);
        } else if ($.isPlainObject(object)) {
            parser(object);
        }
    });
};
4

1 回答 1

0

您可以通过检查当前调用是第一次调用还是递归调用来区分根对象和嵌套对象:

parser = function (object, firstCall) {
    _.each(object, function (object, name) {
        if (firstCall && $.isArray(object)) {
            parser_2(object);
        } else if (object.errors) {
            var inputElement = element.find('[name="' + name + '"]');
            //other code
        } else if ($.isPlainObject(object)) {
            parser(object);  // don't pass `true` here
        }
    });
};

然后你用parser(..., true).

顺便说一句,同时命名输入对象和嵌套对象object是令人困惑的。

于 2012-08-29T12:55:15.650 回答