1.需求:
需要处理的数据格式:
//要处理的数据
[
{
"MAINMATTER_UUID": "",
"SITUATIONNAME": "",
"DISTRICTNAME": "大连市",
"MATTER_NUMBER": "7900-A-05000-140981",
"WORKINGDAYS": "123",
"MATTER_NAME": "母婴保健服务人员资格认定",
"DEPT": "普通单位",
"UUID": "5f03b3b2f5d111eb8cf5abf6df9923bb",
"DISTRICTCODE": "140981000000",
"HIERARCHY": "县级"
},
{
"MAINMATTER_UUID": "",
"SITUATIONNAME": "全部",
"DISTRICTNAME": "大连市",
"MATTER_NUMBER": "7900-A-16200-140981",
"WORKINGDAYS": "123",
"MATTER_NAME": "生鲜乳收购站许可",
"DEPT": "普通单位",
"UUID": "42604ac9f65211eb8cf5abf6df9923bb",
"DISTRICTCODE": "140981000000",
"HIERARCHY": "县级"
},
{
"MAINMATTER_UUID": "7900-A-16200-140981",
"SITUATIONNAME": "全部",
"DISTRICTNAME": "大连市",
"MATTER_NUMBER": "1100-F-00600-140981",
"WORKINGDAYS": "123",
"MATTER_NAME": "宅基地使用权",
"DEPT": "普通单位",
"UUID": "42686127f65211eb8cf5abf6df9923bb",
"DISTRICTCODE": "140981000000",
"HIERARCHY": "县级"
},
{
"MAINMATTER_UUID": "7900-A-16200-140981",
"SITUATIONNAME": "全部",
"DISTRICTNAME": "大连市",
"MATTER_NUMBER": "1300-Z-06500-140981",
"WORKINGDAYS": "123",
"MATTER_NAME": "房屋租赁合同网签备案、撤销",
"DEPT": "普通单位",
"UUID": "426be39df65211eb8cf5abf6df9923bb",
"DISTRICTCODE": "140981000000",
"HIERARCHY": "县级"
},
{
"MAINMATTER_UUID": "7900-A-16200-140981",
"SITUATIONNAME": "全部",
"DISTRICTNAME": "大连市",
"MATTER_NUMBER": "0400-A-01302-140981",
"WORKINGDAYS": "123",
"MATTER_NAME": "机动车变更登记",
"DEPT": "普通单位",
"UUID": "426d6a3ff65211eb8cf5abf6df9923bb",
"DISTRICTCODE": "140981000000",
"HIERARCHY": "县级"
}
]
-
需要处理的数据需要的特点是
MAINMATTER_UUID为空 -
处理后的子项目的
"MAINMATTER_UUID"和父级别的"MATTER_NUMBER"是相等的,并且还需要添加自己到列表中,最后希望处理后的数据结构如下,{ "MAINMATTER_UUID": "", "SITUATIONNAME": "全部", "DISTRICTNAME": "原平市", "MATTER_NUMBER": "7900-A-16200-140981", "WORKINGDAYS": "123", "MATTER_NAME": "生鲜乳收购站许可", "DEPT": "审批局", "UUID": "42604ac9f65211eb8cf5abf6df9923bb", "DISTRICTCODE": "140981000000", "HIERARCHY": "县级", "MAINMATTER_UNFOLD": [ { "MAINMATTER_UUID": "", "SITUATIONNAME": "全部", "DISTRICTNAME": "原平市", "MATTER_NUMBER": "7900-A-16200-140981", "WORKINGDAYS": "123", "MATTER_NAME": "生鲜乳收购站许可", "DEPT": "审批局", "UUID": "42604ac9f65211eb8cf5abf6df9923bb", "DISTRICTCODE": "140981000000", "HIERARCHY": "县级" }, { "MAINMATTER_UUID": "7900-A-16200-140981", "SITUATIONNAME": "全部", "DISTRICTNAME": "原平市", "MATTER_NUMBER": "1100-F-00600-140981", "WORKINGDAYS": "123", "MATTER_NAME": "宅基地使用权", "DEPT": "审批局", "UUID": "42686127f65211eb8cf5abf6df9923bb", "DISTRICTCODE": "140981000000", "HIERARCHY": "县级" } ] } -
为具有
"MAINMATTER_UNFOLD"字段的数组(类似于children形式)
2.处理方法:
思考后发现,一维数组转为二维或者多维数据,肯定需要一个对象,来存储这很多特定key命名的键,以及与之对应的数组,来进行赋值操作。 所以
transformArr函数中,需要一个变量res数组来存贮最后的结果- 另外需要一个变量
obj来存放键为MAINMATTER_UUID,值为所有MAINMATTER_UUID与key相同的项目组成的数组
function transformArr (arr) {
//res是一层以及合并添加的数组
var res = [];
//所有由MAINMATTER_UUID为键的数组组成的对象
var obj = {};
//arr是所有所有有MAINMATTER_UUID的项
arr
.filter(function (item) {
if (!item.MAINMATTER_UUID) {
res.push(item);
}
return item.MAINMATTER_UUID;
})
.forEach(function (item) {
if (!obj[item.MAINMATTER_UUID]) {
obj[item.MAINMATTER_UUID] = [];
}
obj[item.MAINMATTER_UUID].push(item);
});
res.forEach(function (item) {
if (obj[item.MATTER_NUMBER]) {
var itemSmObj = JSON.parse(JSON.stringify(item));
delete itemSmObj.MAINMATTER_UNFOLD;
obj[item.MATTER_NUMBER].unshift(itemSmObj);
item.MAINMATTER_UNFOLD = obj[item.MATTER_NUMBER];
}
});
return res;
},
处理结果:
[
{
"MAINMATTER_UUID": "",
"SITUATIONNAME": "",
"DISTRICTNAME": "原平市",
"MATTER_NUMBER": "7900-A-05000-140981",
"WORKINGDAYS": "123",
"MATTER_NAME": "母婴保健服务人员资格认定",
"DEPT": "审批局",
"UUID": "5f03b3b2f5d111eb8cf5abf6df9923bb",
"DISTRICTCODE": "140981000000",
"HIERARCHY": "县级"
},
{
"MAINMATTER_UUID": "",
"SITUATIONNAME": "全部",
"DISTRICTNAME": "原平市",
"MATTER_NUMBER": "7900-A-16200-140981",
"WORKINGDAYS": "123",
"MATTER_NAME": "生鲜乳收购站许可",
"DEPT": "审批局",
"UUID": "42604ac9f65211eb8cf5abf6df9923bb",
"DISTRICTCODE": "140981000000",
"HIERARCHY": "县级",
"MAINMATTER_UNFOLD": [
{
"MAINMATTER_UUID": "",
"SITUATIONNAME": "全部",
"DISTRICTNAME": "原平市",
"MATTER_NUMBER": "7900-A-16200-140981",
"WORKINGDAYS": "123",
"MATTER_NAME": "生鲜乳收购站许可",
"DEPT": "审批局",
"UUID": "42604ac9f65211eb8cf5abf6df9923bb",
"DISTRICTCODE": "140981000000",
"HIERARCHY": "县级"
},
{
"MAINMATTER_UUID": "7900-A-16200-140981",
"SITUATIONNAME": "全部",
"DISTRICTNAME": "原平市",
"MATTER_NUMBER": "1100-F-00600-140981",
"WORKINGDAYS": "123",
"MATTER_NAME": "宅基地使用权",
"DEPT": "审批局",
"UUID": "42686127f65211eb8cf5abf6df9923bb",
"DISTRICTCODE": "140981000000",
"HIERARCHY": "县级"
},
{
"MAINMATTER_UUID": "7900-A-16200-140981",
"SITUATIONNAME": "全部",
"DISTRICTNAME": "原平市",
"MATTER_NUMBER": "1300-Z-06500-140981",
"WORKINGDAYS": "123",
"MATTER_NAME": "房屋租赁合同网签备案、撤销",
"DEPT": "审批局",
"UUID": "426be39df65211eb8cf5abf6df9923bb",
"DISTRICTCODE": "140981000000",
"HIERARCHY": "县级"
},
{
"MAINMATTER_UUID": "7900-A-16200-140981",
"SITUATIONNAME": "全部",
"DISTRICTNAME": "原平市",
"MATTER_NUMBER": "0400-A-01302-140981",
"WORKINGDAYS": "123",
"MATTER_NAME": "机动车变更登记",
"DEPT": "审批局",
"UUID": "426d6a3ff65211eb8cf5abf6df9923bb",
"DISTRICTCODE": "140981000000",
"HIERARCHY": "县级"
}
]
}
]