情景描述 :多个房间,每个房间的人数不尽相同。后端获取的数据格式是根据房间走的,如:
data: [
{
roomNo: '201',
...
guestList: [
{
name: '张三',
...
},
{
name: '李四',
...
}
],
},
{
roomNo: '202',
...
guestList: [
{
name: '张三三',
...
},
{
name: '李四四',
...
},
{
name: '王五五',
...
},
],
},
{
roomNo: '203',
...
guestList: [
{
name: '赵六',
...
}
],
}
]
需求就是要给房间每个人自动发一张券,券跟房间和人数走(201两人即券1和券2;202三人即券1和券2以及券三)。
信息分析:1. 房间人数不固定;2. 券是根据房间及人数走的,而不是单纯根据房间数或者人数走的;
结论方法:将每个房间的人全部遍历出来重新组成一个数组数据。
let arr = body.data; // 接收后端数据
let arr1 = []; // 用以接收处理后的数据
arr.forEach((i, j) => {
i.guestList((m, n) => {
// let indexNu = n+1; 这样写是只获取到n最后一个值
arr1.push({
indexNum: n+1, // 获取房间内人数序号,由于券序号从1开始,故+1
...i,
});
})
});
// 得到的数据结构
arr1 = [
{
roomNo: '201',
indexNum: 1,
...
guestList: [
{
name: '张三',
...
},
{
name: '李四',
...
}
],
},
{
roomNo: '201',
indexNum: 2,
...
guestList: [
{
name: '张三',
...
},
{
name: '李四',
...
}
],
},
{
roomNo: '202',
indexNum: 1,
...
guestList: [
{
name: '张三三',
...
},
{
name: '李四四',
...
},
{
name: '王五五',
...
},
],
},
{
roomNo: '202',
indexNum: 2,
...
guestList: [
{
name: '张三三',
...
},
{
name: '李四四',
...
},
{
name: '王五五',
...
},
],
},
{
roomNo: '202',
indexNum: 3,
...
guestList: [
{
name: '张三三',
...
},
{
name: '李四四',
...
},
{
name: '王五五',
...
},
],
},
{
roomNo: '203',
indexNum: 1,
...
guestList: [
{
name: '赵六',
...
}
],
}
]