微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。