我有以下json数据。它具有的是具有单个属性config
且具有单个属性cate
且为array of objects
的对象。目前4 objects
内cate
但可能有几个{
"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
其中prop2
和prop2
是此对象的原始属性,位于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
循环内循环cate
。 prop2
可能有数千个对象,我们可以说它们是500.因此对于每个外部循环,内部循环执行500次。
我正在寻找一种更好的解决方案,它使用更少的资源,更少的内存和CPU。如何更好地完成上述解决方案?