基于不同长度的java脚本数组操作



大家好,我正在努力实现以下任务。我有一个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);

最新更新