在工作有一个场景,如下图
我们在处理数据时认为每个一级条件下的二级条件是或的关系,每个一级条件间是且的关系,具体数据组织形式为测试数据中的原数据,但是条件筛选服务器接收的参数在同一个筛选条件下只有且的关系,不同的筛选条件间是或的关系,因此需要将原数据转换为输出数据的形式,以上图为例,三种筛选条件下的7个子条件重新排列组合后生成12个筛选条件,
即:
- 偏好开车当天购票 且 为男性 且 偏好低端消费。
- 偏好开车当天购票 且 为男性 且 偏好高端消费。
- 偏好开车前4-7天购票 且 为男性 且 偏好低端消费。
- 偏好开车前4-7购票 且 为男性 且 偏好高端消费。
- 偏好开车前1-3天购票 且 为男性 且 偏好低端消费。
- 偏好开车前1-3天购票 且 为男性 且 偏好高端消费。
- 偏好开车当天购票 且 为女性 且 偏好低端消费。
- 偏好开车当天购票 且 为女性 且 偏好高端消费。
- 偏好开车前4-7天购票 且 为女性 且 偏好低端消费。
- 偏好开车前4-7购票 且 为女性 且 偏好高端消费。
- 偏好开车前1-3天购票 且 为女性 且 偏好低端消费。
- 偏好开车前1-3天购票 且 为女性 且 偏好高端消费。
要求一级筛选条件数量不确定,每个一级条件下的二级条件不确定。
不限语言。
原数据:
[
{
"unionSet": [
{
"name": "偏好开车当天购票",
"pid": "030080000",
"id": "030080001"
},
{
"name": "偏好开车前1~3天购票",
"pid": "030080000",
"id": "030080002"
},
{
"name": "偏好开车前4~7天购票",
"pid": "030080000",
"id": "030080003"
},
{
"name": "偏好低端消费",
"pid": "010040000",
"id": "010040001"
},
{
"name": "偏好中端消费",
"pid": "010040000",
"id": "010040002"
},
{
"name": "偏好高端消费",
"pid": "010040000",
"id": "010040003"
},
{
"name": "10岁以下",
"pid": "020020000",
"id": "020020001"
},
{
"name": "10岁~15岁",
"pid": "020020000",
"id": "020020002"
},
{
"name": "15岁~44岁",
"pid": "020020000",
"id": "020020003"
},
{
"name": "44岁~59岁",
"pid": "020020000",
"id": "020020004"
}
]
},
{
"unionSet": [
{
"name": "偏好周末出行",
"pid": "010030000",
"id": "010030001"
},
{
"name": "偏好周二到周四出行",
"pid": "010030000",
"id": "010030003"
},
{
"name": "偏好周五出行",
"pid": "010030000",
"id": "010030002"
},
{
"name": "女",
"pid": "020010000",
"id": "020010002"
}
]
},
{
"unionSet": [
{
"name": "偏好出发二线城市",
"pid": "010020000",
"id": "010020002"
},
{
"name": "偏好出发三线以上城市",
"pid": "010020000",
"id": "010020001"
},
{
"name": "44岁~59岁",
"pid": "020020000",
"id": "020020004"
},
{
"name": "15岁~44岁",
"pid": "020020000",
"id": "020020003"
}
]
}
]
要求输出的数据:
[
{
"unionSet": [
{
"id": "030080003",
"label": "偏好开车前4~7天购票"
},
{
"id": "010040002",
"label": "偏好中端消费"
},
{
"id": "020020004",
"label": "44岁~59岁"
}
]
},
{
"unionSet": [
{
"id": "030080003",
"label": "偏好开车前4~7天购票"
},
{
"id": "010040002",
"label": "偏好中端消费"
},
{
"id": "020020003",
"label": "15岁~44岁"
}
]
},
{
"unionSet": [
{
"id": "030080002",
"label": "偏好开车前1~3天购票"
},
{
"id": "010040001",
"label": "偏好低端消费"
},
{
"id": "020020002",
"label": "10岁~15岁"
}
]
},
{
"unionSet": [
{
"id": "030080002",
"label": "偏好开车前1~3天购票"
},
{
"id": "010040001",
"label": "偏好低端消费"
},
{
"id": "020020001",
"label": "10岁以下"
}
]
},
{
"unionSet": [
{
"id": "030080002",
"label": "偏好开车前1~3天购票"
},
{
"id": "010040001",
"label": "偏好低端消费"
},
{
"id": "020020004",
"label": "44岁~59岁"
}
]
},
{
"unionSet": [
{
"id": "030080002",
"label": "偏好开车前1~3天购票"
},
{
"id": "010040001",
"label": "偏好低端消费"
},
{
"id": "020020003",
"label": "15岁~44岁"
}
]
},
{
"unionSet": [
{
"id": "030080003",
"label": "偏好开车前4~7天购票"
},
{
"id": "010040002",
"label": "偏好中端消费"
},
{
"id": "020020002",
"label": "10岁~15岁"
}
]
},
{
"unionSet": [
{
"id": "030080003",
"label": "偏好开车前4~7天购票"
},
{
"id": "010040002",
"label": "偏好中端消费"
},
{
"id": "020020001",
"label": "10岁以下"
}
]
},
{
"unionSet": [
{
"id": "030080001",
"label": "偏好开车当天购"
},
{
"id": "010040001",
"label": "偏好低端消费"
},
{
"id": "020020002",
"label": "10岁~15岁"
}
]
},
{
"unionSet": [
{
"id": "030080001",
"label": "偏好开车当天购"
},
{
"id": "010040001",
"label": "偏好低端消费"
},
{
"id": "020020003",
"label": "15岁~44岁"
}
]
},
{
"unionSet": [
{
"id": "030080001",
"label": "偏好开车当天购"
},
{
"id": "010040001",
"label": "偏好低端消费"
},
{
"id": "020020004",
"label": "44岁~59岁"
}
]
},
{
"unionSet": [
{
"id": "030080002",
"label": "偏好开车前1~3天购票"
},
{
"id": "010040002",
"label": "偏好中端消费"
},
{
"id": "020020002",
"label": "10岁~15岁"
}
]
},
{
"unionSet": [
{
"id": "030080001",
"label": "偏好开车当天购"
},
{
"id": "010040003",
"label": "偏好高端消费"
},
{
"id": "020020004",
"label": "44岁~59岁"
}
]
},
{
"unionSet": [
{
"id": "030080002",
"label": "偏好开车前1~3天购票"
},
{
"id": "010040002",
"label": "偏好中端消费"
},
{
"id": "020020003",
"label": "15岁~44岁"
}
]
},
{
"unionSet": [
{
"id": "030080002",
"label": "偏好开车前1~3天购票"
},
{
"id": "010040002",
"label": "偏好中端消费"
},
{
"id": "020020001",
"label": "10岁以下"
}
]
},
{
"unionSet": [
{
"id": "030080001",
"label": "偏好开车当天购"
},
{
"id": "010040001",
"label": "偏好低端消费"
},
{
"id": "020020001",
"label": "10岁以下"
}
]
},
{
"unionSet": [
{
"id": "030080001",
"label": "偏好开车当天购"
},
{
"id": "010040003",
"label": "偏好高端消费"
},
{
"id": "020020001",
"label": "10岁以下"
}
]
},
{
"unionSet": [
{
"id": "030080001",
"label": "偏好开车当天购"
},
{
"id": "010040003",
"label": "偏好高端消费"
},
{
"id": "020020003",
"label": "15岁~44岁"
}
]
},
{
"unionSet": [
{
"id": "030080002",
"label": "偏好开车前1~3天购票"
},
{
"id": "010040002",
"label": "偏好中端消费"
},
{
"id": "020020004",
"label": "44岁~59岁"
}
]
},
{
"unionSet": [
{
"id": "030080001",
"label": "偏好开车当天购"
},
{
"id": "010040003",
"label": "偏好高端消费"
},
{
"id": "020020002",
"label": "10岁~15岁"
}
]
},
{
"unionSet": [
{
"id": "030080003",
"label": "偏好开车前4~7天购票"
},
{
"id": "010040001",
"label": "偏好低端消费"
},
{
"id": "020020002",
"label": "10岁~15岁"
}
]
},
{
"unionSet": [
{
"id": "030080003",
"label": "偏好开车前4~7天购票"
},
{
"id": "010040001",
"label": "偏好低端消费"
},
{
"id": "020020003",
"label": "15岁~44岁"
}
]
},
{
"unionSet": [
{
"id": "030080003",
"label": "偏好开车前4~7天购票"
},
{
"id": "010040001",
"label": "偏好低端消费"
},
{
"id": "020020001",
"label": "10岁以下"
}
]
},
{
"unionSet": [
{
"id": "030080003",
"label": "偏好开车前4~7天购票"
},
{
"id": "010040003",
"label": "偏好高端消费"
},
{
"id": "020020004",
"label": "44岁~59岁"
}
]
},
{
"unionSet": [
{
"id": "030080003",
"label": "偏好开车前4~7天购票"
},
{
"id": "010040003",
"label": "偏好高端消费"
},
{
"id": "020020003",
"label": "15岁~44岁"
}
]
},
{
"unionSet": [
{
"id": "030080003",
"label": "偏好开车前4~7天购票"
},
{
"id": "010040003",
"label": "偏好高端消费"
},
{
"id": "020020002",
"label": "10岁~15岁"
}
]
},
{
"unionSet": [
{
"id": "030080003",
"label": "偏好开车前4~7天购票"
},
{
"id": "010040003",
"label": "偏好高端消费"
},
{
"id": "020020001",
"label": "10岁以下"
}
]
},
{
"unionSet": [
{
"id": "030080003",
"label": "偏好开车前4~7天购票"
},
{
"id": "010040001",
"label": "偏好低端消费"
},
{
"id": "020020004",
"label": "44岁~59岁"
}
]
},
{
"unionSet": [
{
"id": "030080002",
"label": "偏好开车前1~3天购票"
},
{
"id": "010040003",
"label": "偏好高端消费"
},
{
"id": "020020001",
"label": "10岁以下"
}
]
},
{
"unionSet": [
{
"id": "030080002",
"label": "偏好开车前1~3天购票"
},
{
"id": "010040003",
"label": "偏好高端消费"
},
{
"id": "020020002",
"label": "10岁~15岁"
}
]
},
{
"unionSet": [
{
"id": "030080001",
"label": "偏好开车当天购"
},
{
"id": "010040002",
"label": "偏好中端消费"
},
{
"id": "020020002",
"label": "10岁~15岁"
}
]
},
{
"unionSet": [
{
"id": "030080001",
"label": "偏好开车当天购"
},
{
"id": "010040002",
"label": "偏好中端消费"
},
{
"id": "020020001",
"label": "10岁以下"
}
]
},
{
"unionSet": [
{
"id": "030080002",
"label": "偏好开车前1~3天购票"
},
{
"id": "010040003",
"label": "偏好高端消费"
},
{
"id": "020020003",
"label": "15岁~44岁"
}
]
},
{
"unionSet": [
{
"id": "030080001",
"label": "偏好开车当天购"
},
{
"id": "010040002",
"label": "偏好中端消费"
},
{
"id": "020020004",
"label": "44岁~59岁"
}
]
},
{
"unionSet": [
{
"id": "030080002",
"label": "偏好开车前1~3天购票"
},
{
"id": "010040003",
"label": "偏好高端消费"
},
{
"id": "020020004",
"label": "44岁~59岁"
}
]
},
{
"unionSet": [
{
"id": "030080001",
"label": "偏好开车当天购"
},
{
"id": "010040002",
"label": "偏好中端消费"
},
{
"id": "020020003",
"label": "15岁~44岁"
}
]
},
{
"unionSet": [
{
"id": "020010002",
"label": "女"
},
{
"id": "010030003",
"label": "偏好周二到周四出行"
}
]
},
{
"unionSet": [
{
"id": "020010002",
"label": "女"
},
{
"id": "010030002",
"label": "偏好周五出行"
}
]
},
{
"unionSet": [
{
"id": "020010002",
"label": "女"
},
{
"id": "010030001",
"label": "偏好周末出行"
}
]
},
{
"unionSet": [
{
"id": "010020001",
"label": "偏好出发三线以上城市"
},
{
"id": "020020004",
"label": "44岁~59岁"
}
]
},
{
"unionSet": [
{
"id": "010020001",
"label": "偏好出发三线以上城市"
},
{
"id": "020020003",
"label": "15岁~44岁"
}
]
},
{
"unionSet": [
{
"id": "010020002",
"label": "偏好出发二线城市"
},
{
"id": "020020004",
"label": "44岁~59岁"
}
]
},
{
"unionSet": [
{
"id": "010020002",
"label": "偏好出发二线城市"
},
{
"id": "020020003",
"label": "15岁~44岁"
}
]
}
]
原始数据的每一个unionSet是一个条件组,包含一级和二级条件,需要根据这些条件组生成最后的数据。比如这里一共三个条件组,第一个条件组是3个一级条件,一级条件下分别是3个二级条件、2个二级条件、4个二级条件,所以可以组成36个条件,以此类推。一级条件是以pid区分的。
如果答案精彩,可有偿!
origin就是你的原始数据