从后台接收到的一组数据,如何在前端整合成一个关系型的json对象?
我从后台接受到一组数据,格式大致如下:[{"name":"101",//房间号,表示1楼1号房"floor":"1-1",//楼层号,表示1单元1楼"unit":"1",...
我从后台接受到一组数据,格式大致如下:
[
{
"name":"101",//房间号,表示1楼1号房
"floor":"1-1",//楼层号,表示1单元1楼
"unit":"1",//单元号,表示1单元
"buildId":"1#"//楼栋id,表示1号楼
},
{
"name":"102",
"floor":"1-1",
"unit":"1",
"buildId":"1#"
},
{
"name":"201",
"floor":"1-2",
"unit":"1",
"buildId":"1#"
},
{
"name":"202", //房间号,表示2楼2号房
"floor":"1-2",//楼层号,表示1单元2楼
"unit":"1",
"buildId":"1#"
},
{
"name":"101",//房间号,表示1楼1号房
"floor":"2-1",//楼层号,表示2单元1楼
"unit":"2",//单元号,表示2单元
"buildId":"1#"
},
{
"name":"101",//房间号,表示2楼1号房
"floor":"2-2",//楼层号,表示2单元2楼
"unit":"2",//单元号,表示2单元
"buildId":"1#"
},"..."
]
这组数据中,对应关系就是floor、unit、buildId,大致意思就是,一栋楼包含几个单元,每个单元包含几个楼层,每层楼包含几户
{
"buildId":"1#",//1号楼
"unit":[
{
"id":"1",//1单元
"floor":[
{
"id":"1-1",//1单元1楼
"room":[
{
"name":"101",//房间号,表示所属1楼1号房
"floor":"1-1",//楼层号,表示所属1单元1楼
"unit":"1",//单元号,表示所属1单元
"buildId":"1#"//楼栋id,表示所属1号楼
},
{
"name":"102",
"floor":"1-1",
"unit":"1",
"buildId":"1#"
},
]
},
{
"id":"1-2",//1单元2楼
"room":[
"..."
]
}
]
},
{
"id":"2",//2单元
"floor":[
"..."
]
}
]
} 展开
[
{
"name":"101",//房间号,表示1楼1号房
"floor":"1-1",//楼层号,表示1单元1楼
"unit":"1",//单元号,表示1单元
"buildId":"1#"//楼栋id,表示1号楼
},
{
"name":"102",
"floor":"1-1",
"unit":"1",
"buildId":"1#"
},
{
"name":"201",
"floor":"1-2",
"unit":"1",
"buildId":"1#"
},
{
"name":"202", //房间号,表示2楼2号房
"floor":"1-2",//楼层号,表示1单元2楼
"unit":"1",
"buildId":"1#"
},
{
"name":"101",//房间号,表示1楼1号房
"floor":"2-1",//楼层号,表示2单元1楼
"unit":"2",//单元号,表示2单元
"buildId":"1#"
},
{
"name":"101",//房间号,表示2楼1号房
"floor":"2-2",//楼层号,表示2单元2楼
"unit":"2",//单元号,表示2单元
"buildId":"1#"
},"..."
]
这组数据中,对应关系就是floor、unit、buildId,大致意思就是,一栋楼包含几个单元,每个单元包含几个楼层,每层楼包含几户
{
"buildId":"1#",//1号楼
"unit":[
{
"id":"1",//1单元
"floor":[
{
"id":"1-1",//1单元1楼
"room":[
{
"name":"101",//房间号,表示所属1楼1号房
"floor":"1-1",//楼层号,表示所属1单元1楼
"unit":"1",//单元号,表示所属1单元
"buildId":"1#"//楼栋id,表示所属1号楼
},
{
"name":"102",
"floor":"1-1",
"unit":"1",
"buildId":"1#"
},
]
},
{
"id":"1-2",//1单元2楼
"room":[
"..."
]
}
]
},
{
"id":"2",//2单元
"floor":[
"..."
]
}
]
} 展开
1个回答
展开全部
<script>
Array.prototype.getIndex = function(id, field){
if(!this.length || !id || !field) return -1;
var i = 0,
len = this.length;
for(;i<len;i++){
if(this[i][field] == id) return i;
}
return -1;
};
Array.prototype.getFloorObj = function(obj){
if(!this.length || !obj) return null;
var i = 0,
len = this.length,
_obj = {};
for(;i<len;i++){
if(this[i]["buildId"] == obj.buildId){
obj.build_index = i;
var j = 0,
l = this[i]["buildId"].unit.length;
for(;j<l;j++){
if(this[i]["buildId"].unit[j]["id"] == obj["unit"]){
obj.unit_index = j;
var k = 0,
lg = this[i]["buildId"].unit[j]["floor"].length;
for(;k<lg;k++){
if(this[i]["buildId"].unit[j]["floor"][k]["id"] == obj["floor"]) {
obj.floor_index = k;
return obj;
}
}
}
}
}
}
return null;
};
var arr = [
{
"name":"101",//房间号,表示1楼1号房
"floor":"1-1",//楼层号,表示1单元1楼
"unit":"1",//单元号,表示1单元
"buildId":"1#"//楼栋id,表示1号楼
},
{
"name":"102",
"floor":"1-1",
"unit":"1",
"buildId":"1#"
},
{
"name":"201",
"floor":"1-2",
"unit":"1",
"buildId":"1#"
},
{
"name":"202", //房间号,表示2楼2号房
"floor":"1-2",//楼层号,表示1单元2楼
"unit":"1",
"buildId":"1#"
},
{
"name":"101",//房间号,表示1楼1号房
"floor":"2-1",//楼层号,表示2单元1楼
"unit":"2",//单元号,表示2单元
"buildId":"1#"
},
{
"name":"101",//房间号,表示2楼1号房
"floor":"2-2",//楼层号,表示2单元2楼
"unit":"2",//单元号,表示2单元
"buildId":"1#"
}
],
newArr = [];
var i = 0,
len = arr.length;
for(;i<len;i++){
var _build_index = newArr.getIndex(arr[i]["buildId"],"buildId");
if(_build_index === -1) {
newArr.push({buildId:arr[i]["buildId"],unit:[]});
_build_index = newArr.length - 1;
}
var _unit_index = newArr[_build_index]["unit"].getIndex(arr[i]["unit"],"id");
if(_unit_index === -1){
newArr[_build_index]["unit"].push({id:arr[i]["unit"],floor:[]});
_unit_index = newArr[_build_index]["unit"].length - 1;
}
var _floor_index = newArr[_build_index]["unit"][_unit_index]["floor"].getIndex(arr[i]["floor"],"id");
if(_floor_index === -1){
newArr[_build_index]["unit"][_unit_index]["floor"].push({id:arr[i]["floor"],room:[]});
_floor_index = newArr[_build_index]["unit"][_unit_index]["floor"].length - 1;
}
newArr[_build_index]["unit"][_unit_index]["floor"][_floor_index]["room"].push(arr[i]);
}
document.write(JSON.stringify(newArr));
</script>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询