javascript将数组对象里面每个值(字段)相等的进行分组

有时候,后端给我返回了一个数据对象,数组里面每个对象有着每个值(字段值)是相等,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里面造成我们需要的结构

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春风得意之时

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值