使用js算法处理json对象

时间:2014-10-26 06:24:58

标签: javascript jquery json algorithm

我有以下json数据。它具有的是具有单个属性config且具有单个属性cate且为array of objects的对象。目前4 objectscate但可能有几个{ "config": { "cate": [ { "prop1": "val1", "color": "green", "prop2": [ { "prop1": "val1", "prop2": "val2" }, { "prop1": "val1", "prop2": "val2" }, { "prop1": "val1", "prop2": "val2" } ] }, { "prop1": "val1", "color": "red", "prop2": [ { "display": "Contact One", "name": "Contact" }, { "display": "Contact Two", "name": "Contact" }, { "display": "Contact Title", "name": "Title" } ] }, { "name": "Demo", "color": "purple", "prop2": [ { "display": "Demo First Name", "name": "Demo" }, { "display": "Demo Last Name", "name": "Demo" }, { "display": "Demo Title", "name": "Title" } ] }, { "name": "generation", "color": "blue", "prop2": [ { "display": "generation First Name", "name": "generationFname" }, { "display": "generation Last Name", "name": "generationLname" }, { "display": "generation Title", "name": "generationTitle" } ] } ], "value": [ { "op": [], "type": "integer" }, { "op": [], "type": "email" }, { "op": [], "type": "string" }, { "op": [], "type": "date" } ] } }

prop1, color, and pro2

第一个对象有3个属性,cate在所有prop2个对象中都很常见。请注意,array of objects也是color,现在只包含3个对象,但在现实世界中,它可能包含数千个或更多。现在我想要的是将属性prop2放在{ 'color': 'green', 'prop1': 'val1', 'prop2': 'val2' } 对象中,如下所示:

prop1

其中prop2prop2是此对象的原始属性,位于cate的{​​{1}}内,但我添加了color作为从其获取的新属性父object。我想要的整个结果在

之下
[
    {
        'color': 'green',
        'prop1': 'val1',
        'prop2': 'val2'
    },
    {
        'color': 'green',
        'prop1': 'val1',
        'prop2': 'val2'
    },
    {
        'color': 'green',
        'prop1': 'val1',
        'prop2': 'val2'
    },
    {
        'color': 'red',
        'display': 'Contact one',
        'name': 'Contact'
    },
    {
        'color': 'red',
        'display': 'Contact two',
        'name': 'Contact'
    },
    {
        'color': 'red',
        'display': 'Contact Title',
        'name': 'Title'
    },
    {
        'color': 'purple',
        'display': 'Demo First Name',
        'name': 'Demo'
    },
    {
        'color': 'purple',
        'display': 'Demo Last Name',
        'name': 'Demo'
    },
    {
        'color': 'purple',
        'display': 'Demo Title',
        'name': 'Title'
    },
    {
        'color': 'blue',
        'display': 'generation First Name',
        'name': 'generationFname'
    },
    {
        'color': 'blue',
        'display': 'generation Last Name',
        'name': 'generationLname'
    },
    {
        'color': 'blue',
        'display': 'generation Title',
        'name': 'generationTitle'
    }
]

我当前的实现工作正常,因为它使用了大量的资源和内存,所以不应该为大量数据做完。 我正在寻找一个有效的解决方案。以下是我的解决方案

        var contents = [];

        $.getJSON('data.json', function (data) {
            $.each(data.config.cate, function (key, val) {
                $.each(val.prop2, function (k, v) {
                    v['color'] = val.color;
                    contents.push(v);
                });
            });

            console.log(contents);
        });

正如你所看到的,我正在循环两次。首先,我循环遍历cate(这是不好的,有几个可以说cate内有500个对象。我再次在prop2循环内循环cateprop2可能有数千个对象,我们可以说它们是500.因此对于每个外部循环,内部循环执行500次。

我正在寻找一种更好的解决方案,它使用更少的资源,更少的内存和CPU。如何更好地完成上述解决方案?

0 个答案:

没有答案