如何解决java脚本中基于不同长度的数组操作
大家好,我正在努力完成以下任务。 我有一个数组中的 1.participants 列表,其中包含 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,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'}]},'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'}]},'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",{id:3,name:"Room3",{id:4,name:"Room4",]
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,]
for(var i=0;i<users.length;i++) {
rooms[i%rooms.length].users.push(users[i]);
}
console.log(rooms);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。