解析以下对象的最佳方法

时间:2012-08-29 12:45:11

标签: javascript jquery underscore.js

我需要解析以下对象。

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

我的目标是在根对象中有错误键时调用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);
        }
    });
};

1 个答案:

答案 0 :(得分: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会让人感到困惑。