有时候,后端给我返回了一个数据对象,数组里面每个对象有着每个值(字段值)是相等,UI页面里面是需要进行分了展示的
比如下面这个页面:
一楼里面有这着多个房间,同理二楼里面也是有着多个房间的,而这个时候后端给我们返回的数据类型如下:
{
"status": 10000,
"msg": "SUCCESS",
"data": [
{
"id": 1,
"houseId": "bc8134f4-9cd2-4dc8-8f88-bccbcfccd3f3",
"userId": null,
"roomNum": 101,
"roomType": "1",
"isRent": "1",
"idcardName": null,
"idcardNum": null,
"idcardImgFront": null,
"idcardImgBack": null,
"idcardImgPeople": null,
"rentType": null,
"title": null,
"city": null,
"address": null,
"thumbnailUrl": null,
"slideUrl": null,
"monthRent": 4546.0,
"status": null,
"certificateNo": null,
"toiletNum": null,
"kitchenNum": null,
"livingRoomNum": null,
"bedroomNum": null,
"hasAirConditioner": null,
"roomArea": 34.00,
"floor": 1,
"maxFloor": null,
"hasElevator": null,
"buildYear": null,
"roomDirection": "向西",
"hallDirection": "向东",
"lastOrderStartTime": null,
"lastOrderEndTime": null,
"longitudeLatitude": null,
"contactName": null,
"contactPhone": null,
"roomRentalPeriod": 6,
"electricityFees": "54.0",
"waterFees": "55.0",
"chargeMethod": null,
"roomMatching": null,
"nearbyMatching": "[{\"name\":\"购物广场\",\"checked\":true,\"disabled\":false},{\"name\":\"学校\",\"checked\":true,\"disabled\":false},{\"name\":\"医疗机构\",\"checked\":true,\"disabled\":false}]",
"roomHeadImg": null,
"roomImg": null,
"room360Img": null,
"createTime": null,
"updateTime": null,
"content": null
},
{
"id": 2,
"houseId": "bc8134f4-9cd2-4dc8-8f88-bccbcfccd3f3",
"userId": null,
"roomNum": 101,
"roomType": null,
"isRent": null,
"idcardName": null,
"idcardNum": null,
"idcardImgFront": null,
"idcardImgBack": null,
"idcardImgPeople": null,
"rentType": null,
"title": null,
"city": null,
"address": null,
"thumbnailUrl": null,
"slideUrl": null,
"monthRent": null,
"status": null,
"certificateNo": null,
"toiletNum": null,
"kitchenNum": null,
"livingRoomNum": null,
"bedroomNum": null,
"hasAirConditioner": null,
"roomArea": null,
"floor": 1,
"maxFloor": null,
"hasElevator": null,
"buildYear": null,
"roomDirection": null,
"hallDirection": null,
"lastOrderStartTime": null,
"lastOrderEndTime": null,
"longitudeLatitude": null,
"contactName": null,
"contactPhone": null,
"roomRentalPeriod": null,
"electricityFees": null,
"waterFees": null,
"chargeMethod": null,
"roomMatching": null,
"nearbyMatching": null,
"roomHeadImg": null,
"roomImg": null,
"room360Img": null,
"createTime": null,
"updateTime": null,
"content": null
},
{
"id": 3,
"houseId": "bc8134f4-9cd2-4dc8-8f88-bccbcfccd3f3",
"userId": null,
"roomNum": 101,
"roomType": null,
"isRent": null,
"idcardName": null,
"idcardNum": null,
"idcardImgFront": null,
"idcardImgBack": null,
"idcardImgPeople": null,
"rentType": null,
"title": null,
"city": null,
"address": null,
"thumbnailUrl": null,
"slideUrl": null,
"monthRent": null,
"status": null,
"certificateNo": null,
"toiletNum": null,
"kitchenNum": null,
"livingRoomNum": null,
"bedroomNum": null,
"hasAirConditioner": null,
"roomArea": null,
"floor": 1,
"maxFloor": null,
"hasElevator": null,
"buildYear": null,
"roomDirection": null,
"hallDirection": null,
"lastOrderStartTime": null,
"lastOrderEndTime": null,
"longitudeLatitude": null,
"contactName": null,
"contactPhone": null,
"roomRentalPeriod": null,
"electricityFees": null,
"waterFees": null,
"chargeMethod": null,
"roomMatching": null,
"nearbyMatching": null,
"roomHeadImg": null,
"roomImg": null,
"room360Img": null,
"createTime": null,
"updateTime": null,
"content": null
},
{
"id": 4,
"houseId": "bc8134f4-9cd2-4dc8-8f88-bccbcfccd3f3",
"userId": null,
"roomNum": 101,
"roomType": null,
"isRent": null,
"idcardName": null,
"idcardNum": null,
"idcardImgFront": null,
"idcardImgBack": null,
"idcardImgPeople": null,
"rentType": null,
"title": null,
"city": null,
"address": null,
"thumbnailUrl": null,
"slideUrl": null,
"monthRent": null,
"status": null,
"certificateNo": null,
"toiletNum": null,
"kitchenNum": null,
"livingRoomNum": null,
"bedroomNum": null,
"hasAirConditioner": null,
"roomArea": null,
"floor": 1,
"maxFloor": null,
"hasElevator": null,
"buildYear": null,
"roomDirection": null,
"hallDirection": null,
"lastOrderStartTime": null,
"lastOrderEndTime": null,
"longitudeLatitude": null,
"contactName": null,
"contactPhone": null,
"roomRentalPeriod": null,
"electricityFees": null,
"waterFees": null,
"chargeMethod": null,
"roomMatching": null,
"nearbyMatching": null,
"roomHeadImg": null,
"roomImg": null,
"room360Img": null,
"createTime": null,
"updateTime": null,
"content": null
},
{
"id": 5,
"houseId": "bc8134f4-9cd2-4dc8-8f88-bccbcfccd3f3",
"userId": null,
"roomNum": 101,
"roomType": null,
"isRent": null,
"idcardName": null,
"idcardNum": null,
"idcardImgFront": null,
"idcardImgBack": null,
"idcardImgPeople": null,
"rentType": null,
"title": null,
"city": null,
"address": null,
"thumbnailUrl": null,
"slideUrl": null,
"monthRent": null,
"status": null,
"certificateNo": null,
"toiletNum": null,
"kitchenNum": null,
"livingRoomNum": null,
"bedroomNum": null,
"hasAirConditioner": null,
"roomArea": null,
"floor": 1,
"maxFloor": null,
"hasElevator": null,
"buildYear": null,
"roomDirection": null,
"hallDirection": null,
"lastOrderStartTime": null,
"lastOrderEndTime": null,
"longitudeLatitude": null,
"contactName": null,
"contactPhone": null,
"roomRentalPeriod": null,
"electricityFees": null,
"waterFees": null,
"chargeMethod": null,
"roomMatching": null,
"nearbyMatching": null,
"roomHeadImg": null,
"roomImg": null,
"room360Img": null,
"createTime": null,
"updateTime": null,
"content": null
},
{
"id": 6,
"houseId": "bc8134f4-9cd2-4dc8-8f88-bccbcfccd3f3",
"userId": null,
"roomNum": 101,
"roomType": null,
"isRent": null,
"idcardName": null,
"idcardNum": null,
"idcardImgFront": null,
"idcardImgBack": null,
"idcardImgPeople": null,
"rentType": null,
"title": null,
"city": null,
"address": null,
"thumbnailUrl": null,
"slideUrl": null,
"monthRent": null,
"status": null,
"certificateNo": null,
"toiletNum": null,
"kitchenNum": null,
"livingRoomNum": null,
"bedroomNum": null,
"hasAirConditioner": null,
"roomArea": null,
"floor": 1,
"maxFloor": null,
"hasElevator": null,
"buildYear": null,
"roomDirection": null,
"hallDirection": null,
"lastOrderStartTime": null,
"lastOrderEndTime": null,
"longitudeLatitude": null,
"contactName": null,
"contactPhone": null,
"roomRentalPeriod": null,
"electricityFees": null,
"waterFees": null,
"chargeMethod": null,
"roomMatching": null,
"nearbyMatching": null,
"roomHeadImg": null,
"roomImg": null,
"room360Img": null,
"createTime": null,
"updateTime": null,
"content": null
},
{
"id": 7,
"houseId": "bc8134f4-9cd2-4dc8-8f88-bccbcfccd3f3",
"userId": null,
"roomNum": 505,
"roomType": null,
"isRent": null,
"idcardName": null,
"idcardNum": null,
"idcardImgFront": null,
"idcardImgBack": null,
"idcardImgPeople": null,
"rentType": null,
"title": null,
"city": null,
"address": null,
"thumbnailUrl": null,
"slideUrl": null,
"monthRent": null,
"status": null,
"certificateNo": null,
"toiletNum": null,
"kitchenNum": null,
"livingRoomNum": null,
"bedroomNum": null,
"hasAirConditioner": null,
"roomArea": null,
"floor": 5,
"maxFloor": null,
"hasElevator": null,
"buildYear": null,
"roomDirection": null,
"hallDirection": null,
"lastOrderStartTime": null,
"lastOrderEndTime": null,
"longitudeLatitude": null,
"contactName": null,
"contactPhone": null,
"roomRentalPeriod": null,
"electricityFees": null,
"waterFees": null,
"chargeMethod": null,
"roomMatching": null,
"nearbyMatching": null,
"roomHeadImg": null,
"roomImg": null,
"room360Img": null,
"createTime": null,
"updateTime": null,
"content": null
},
{
"id": 8,
"houseId": "bc8134f4-9cd2-4dc8-8f88-bccbcfccd3f3",
"userId": null,
"roomNum": 505,
"roomType": null,
"isRent": null,
"idcardName": null,
"idcardNum": null,
"idcardImgFront": null,
"idcardImgBack": null,
"idcardImgPeople": null,
"rentType": null,
"title": null,
"city": null,
"address": null,
"thumbnailUrl": null,
"slideUrl": null,
"monthRent": null,
"status": null,
"certificateNo": null,
"toiletNum": null,
"kitchenNum": null,
"livingRoomNum": null,
"bedroomNum": null,
"hasAirConditioner": null,
"roomArea": null,
"floor": 5,
"maxFloor": null,
"hasElevator": null,
"buildYear": null,
"roomDirection": null,
"hallDirection": null,
"lastOrderStartTime": null,
"lastOrderEndTime": null,
"longitudeLatitude": null,
"contactName": null,
"contactPhone": null,
"roomRentalPeriod": null,
"electricityFees": null,
"waterFees": null,
"chargeMethod": null,
"roomMatching": null,
"nearbyMatching": null,
"roomHeadImg": null,
"roomImg": null,
"room360Img": null,
"createTime": null,
"updateTime": null,
"content": null
},
{
"id": 9,
"houseId": "bc8134f4-9cd2-4dc8-8f88-bccbcfccd3f3",
"userId": null,
"roomNum": 505,
"roomType": null,
"isRent": null,
"idcardName": null,
"idcardNum": null,
"idcardImgFront": null,
"idcardImgBack": null,
"idcardImgPeople": null,
"rentType": null,
"title": null,
"city": null,
"address": null,
"thumbnailUrl": null,
"slideUrl": null,
"monthRent": null,
"status": null,
"certificateNo": null,
"toiletNum": null,
"kitchenNum": null,
"livingRoomNum": null,
"bedroomNum": null,
"hasAirConditioner": null,
"roomArea": null,
"floor": 5,
"maxFloor": null,
"hasElevator": null,
"buildYear": null,
"roomDirection": null,
"hallDirection": null,
"lastOrderStartTime": null,
"lastOrderEndTime": null,
"longitudeLatitude": null,
"contactName": null,
"contactPhone": null,
"roomRentalPeriod": null,
"electricityFees": null,
"waterFees": null,
"chargeMethod": null,
"roomMatching": null,
"nearbyMatching": null,
"roomHeadImg": null,
"roomImg": null,
"room360Img": null,
"createTime": null,
"updateTime": null,
"content": null
},
{
"id": 14,
"houseId": "bc8134f4-9cd2-4dc8-8f88-bccbcfccd3f3",
"userId": null,
"roomNum": 606,
"roomType": null,
"isRent": null,
"idcardName": null,
"idcardNum": null,
"idcardImgFront": null,
"idcardImgBack": null,
"idcardImgPeople": null,
"rentType": null,
"title": null,
"city": null,
"address": null,
"thumbnailUrl": null,
"slideUrl": null,
"monthRent": null,
"status": null,
"certificateNo": null,
"toiletNum": null,
"kitchenNum": null,
"livingRoomNum": null,
"bedroomNum": null,
"hasAirConditioner": null,
"roomArea": null,
"floor": 6,
"maxFloor": null,
"hasElevator": null,
"buildYear": null,
"roomDirection": null,
"hallDirection": null,
"lastOrderStartTime": null,
"lastOrderEndTime": null,
"longitudeLatitude": null,
"contactName": null,
"contactPhone": null,
"roomRentalPeriod": null,
"electricityFees": null,
"waterFees": null,
"chargeMethod": null,
"roomMatching": null,
"nearbyMatching": null,
"roomHeadImg": null,
"roomImg": null,
"room360Img": null,
"createTime": null,
"updateTime": null,
"content": null
},
{
"id": 17,
"houseId": "bc8134f4-9cd2-4dc8-8f88-bccbcfccd3f3",
"userId": null,
"roomNum": 606,
"roomType": null,
"isRent": null,
"idcardName": null,
"idcardNum": null,
"idcardImgFront": null,
"idcardImgBack": null,
"idcardImgPeople": null,
"rentType": null,
"title": null,
"city": null,
"address": null,
"thumbnailUrl": null,
"slideUrl": null,
"monthRent": null,
"status": null,
"certificateNo": null,
"toiletNum": null,
"kitchenNum": null,
"livingRoomNum": null,
"bedroomNum": null,
"hasAirConditioner": null,
"roomArea": null,
"floor": 6,
"maxFloor": null,
"hasElevator": null,
"buildYear": null,
"roomDirection": null,
"hallDirection": null,
"lastOrderStartTime": null,
"lastOrderEndTime": null,
"longitudeLatitude": null,
"contactName": null,
"contactPhone": null,
"roomRentalPeriod": null,
"electricityFees": null,
"waterFees": null,
"chargeMethod": null,
"roomMatching": null,
"nearbyMatching": null,
"roomHeadImg": null,
"roomImg": null,
"room360Img": null,
"createTime": null,
"updateTime": null,
"content": null
},
{
"id": 20,
"houseId": "bc8134f4-9cd2-4dc8-8f88-bccbcfccd3f3",
"userId": null,
"roomNum": 101,
"roomType": null,
"isRent": null,
"idcardName": null,
"idcardNum": null,
"idcardImgFront": null,
"idcardImgBack": null,
"idcardImgPeople": null,
"rentType": null,
"title": null,
"city": null,
"address": null,
"thumbnailUrl": null,
"slideUrl": null,
"monthRent": null,
"status": null,
"certificateNo": null,
"toiletNum": null,
"kitchenNum": null,
"livingRoomNum": null,
"bedroomNum": null,
"hasAirConditioner": null,
"roomArea": null,
"floor": 1,
"maxFloor": null,
"hasElevator": null,
"buildYear": null,
"roomDirection": null,
"hallDirection": null,
"lastOrderStartTime": null,
"lastOrderEndTime": null,
"longitudeLatitude": null,
"contactName": null,
"contactPhone": null,
"roomRentalPeriod": null,
"electricityFees": null,
"waterFees": null,
"chargeMethod": null,
"roomMatching": null,
"nearbyMatching": null,
"roomHeadImg": null,
"roomImg": null,
"room360Img": null,
"createTime": null,
"updateTime": null,
"content": null
},
{
"id": 23,
"houseId": "bc8134f4-9cd2-4dc8-8f88-bccbcfccd3f3",
"userId": null,
"roomNum": 101,
"roomType": null,
"isRent": null,
"idcardName": null,
"idcardNum": null,
"idcardImgFront": null,
"idcardImgBack": null,
"idcardImgPeople": null,
"rentType": null,
"title": null,
"city": null,
"address": null,
"thumbnailUrl": null,
"slideUrl": null,
"monthRent": null,
"status": null,
"certificateNo": null,
"toiletNum": null,
"kitchenNum": null,
"livingRoomNum": null,
"bedroomNum": null,
"hasAirConditioner": null,
"roomArea": null,
"floor": 1,
"maxFloor": null,
"hasElevator": null,
"buildYear": null,
"roomDirection": null,
"hallDirection": null,
"lastOrderStartTime": null,
"lastOrderEndTime": null,
"longitudeLatitude": null,
"contactName": null,
"contactPhone": null,
"roomRentalPeriod": null,
"electricityFees": null,
"waterFees": null,
"chargeMethod": null,
"roomMatching": null,
"nearbyMatching": null,
"roomHeadImg": null,
"roomImg": null,
"room360Img": null,
"createTime": null,
"updateTime": null,
"content": null
},
{
"id": 26,
"houseId": "bc8134f4-9cd2-4dc8-8f88-bccbcfccd3f3",
"userId": null,
"roomNum": 505,
"roomType": null,
"isRent": null,
"idcardName": null,
"idcardNum": null,
"idcardImgFront": null,
"idcardImgBack": null,
"idcardImgPeople": null,
"rentType": null,
"title": null,
"city": null,
"address": null,
"thumbnailUrl": null,
"slideUrl": null,
"monthRent": null,
"status": null,
"certificateNo": null,
"toiletNum": null,
"kitchenNum": null,
"livingRoomNum": null,
"bedroomNum": null,
"hasAirConditioner": null,
"roomArea": null,
"floor": 5,
"maxFloor": null,
"hasElevator": null,
"buildYear": null,
"roomDirection": null,
"hallDirection": null,
"lastOrderStartTime": null,
"lastOrderEndTime": null,
"longitudeLatitude": null,
"contactName": null,
"contactPhone": null,
"roomRentalPeriod": null,
"electricityFees": null,
"waterFees": null,
"chargeMethod": null,
"roomMatching": null,
"nearbyMatching": null,
"roomHeadImg": null,
"roomImg": null,
"room360Img": null,
"createTime": null,
"updateTime": null,
"content": null
}
]
}
可以看到我们需要的一楼二楼数据字段是floor,但是后端并没有给我划分好数据结构,这个时候,我们就需要根据返回的一个数组对象,进行数据的层级处理;
举例;
let dataArry = [
{id: 1, value: '值1'},
{id: 2, value: '值2'},
{id: 3, value: '值3'},
{id: 1, value: '值4'},
{id: 2, value: '值5'},
]
dataArry 是个数组对象,我们需要根据id值相同,进行分组处理
function classify(arr) {
let map = {};
let myArr = [];
for (var i = 0; i < arr.length; i++) {
if(!map[arr[i].id]){
myArr.push({
id:arr[i].id,
data:[arr[i]]
})
map[arr[i].id] = arr[i]
} else {
for (var j = 0; j < myArr.length; j++) {
if(arr[i].id === myArr[j].id){
myArr[j].data.push(arr[i]);
break
}
}
}
}
return myArr
}
console.log(classify(dataArry))
结果:
这个时候就可以实现我们的UI展示结构了
这里关键是利用了map对象来判断,往新的一个数组myArr里面造成我们需要的结构