大家好,我正在努力实现以下任务。我有一个1的列表。参与者以id,用户名为对象的数组,其长度可以是偶数/奇数。(比方说9)2。基于房间数(假设是4),我必须根据房间数推动用户划分房间新数组。直到我试过的是下面的零食。这将是伟大的赞赏,可以帮助我实现这一目标。我敢肯定我刚才所做的是不正确的。
const users = [
{
id: 1,
user: 'User 1'
},
{
id: 2,
user: 'User 2'
},
{
id: 3,
user: 'User 3'
},
{
id: 4,
user: 'User 4'
},
{
id: 5,
user: 'User 5'
},
{
id: 6,
user: 'User 6'
},
{
id: 7,
user: 'User 7'
},
{
id: 8,
user: 'User 8'
},
{
id: 9,
user: 'User 9'
}
];
const usersCount = users.length;
const noOfRooms = 4;
const floorValue = Math.floor(usersCount/noOfRooms);
const ceilValue = Math.ceil(usersCount/noOfRooms);
console.log(`${floorValue} - ${ceilValue} users per room`);
// Your try
for(let i = 1; i <= noOfRooms; i++) {
if(i != noOfRooms) {
console.log(floorValue); //push respective users based on this log length in order
} else {
console.log(ceilValue); //push respective users based on this log length in order
}
}
// Previous try
// function chunkArray(myArray, chunk_size){
// // console.log('CHeck ChunkSize', chunk_size);
// var index = 0;
// var arrayLength = myArray.length;
// var tempArray = [];
// for (index = 0; index < arrayLength; index += chunk_size) {
// myChunk = myArray.slice(index, index+chunk_size);
// // Do something if you want with the group
// tempArray.push(myChunk);
// }
// return tempArray;
// }
// const usersCount = users.length;
// const noOfRooms = 4;
// const floorValue = Math.floor(usersCount/noOfRooms);
// const ceilValue = Math.ceil(usersCount/noOfRooms);
// // console.log(`${floorValue} - ${ceilValue} users per room`);
// let borArr= [];
// for(let i = 1; i <= noOfRooms; i++) {
// if(i != noOfRooms) {
// const result = chunkArray(users, floorValue);
// const rec = {id: i, title: `${'Breakout room'}${i}`, users: result[i-1]};
// borArr.push(rec);
// // console.log(floorValue);
// } else {
// const result = chunkArray(users, ceilValue);
// const rec = {id: i, title: `${'Breakout room'}${i}`, users: result[i-2]};
// borArr.push(rec);
// // console.log(ceilValue);
// }
// }
// console.log('CHeck***** arr', JSON.stringify(borArr));
Expected Output :
[{'id':1,'title':'Breakout room1','users':[{'id':1,'user':'User 1'},{'id':2,'user':'User 2'}]},{'id':2,'title':'Breakout room2','users':[{'id':3,'user':'User 3'},{'id':4,'user':'User 4'}]},{'id':3,'title':'Breakout room3','users':[{'id':5,'user':'User 5'},{'id':6,'user':'User 6'}]},{'id':4,'title':'Breakout room4','users':[{'id':7,'user':'User 7'},{'id':8,'user':'User 8'},{'id':9,'user':'User 9'}]}]
最简单的方法就是循环分配用户到房间。它不会给出您想要的确切输出,但具有尽可能多地将用户均匀分布到房间的最终目标:
var rooms = [
{id:1, name:"Room1",users:[]},
{id:2, name:"Room2",users:[]},
{id:3, name:"Room3",users:[]},
{id:4, name:"Room4",users:[]},
]
for(var i=0;i<users.length;i++) {
rooms[i%rooms.length].users.push(users[i]);
}
var users = [
{
id: 1,
user: 'User 1'
},
{
id: 2,
user: 'User 2'
},
{
id: 3,
user: 'User 3'
},
{
id: 4,
user: 'User 4'
},
{
id: 5,
user: 'User 5'
},
{
id: 6,
user: 'User 6'
},
{
id: 7,
user: 'User 7'
},
{
id: 8,
user: 'User 8'
},
{
id: 9,
user: 'User 9'
}
]
var rooms = [
{id:1, name:"Room1",users:[]},
{id:2, name:"Room2",users:[]},
{id:3, name:"Room3",users:[]},
{id:4, name:"Room4",users:[]},
]
for(var i=0;i<users.length;i++) {
rooms[i%rooms.length].users.push(users[i]);
}
console.log(rooms);