हाय सब मैं निम्नलिखित कार्य प्राप्त करने की कोशिश कर रहा हूँ। मेरे पास आईडी के साथ एक सरणी में 1. प्रतिभागियों की सूची थी, वस्तुओं में उपयोगकर्ता नाम, इसकी लंबाई सम/विषम हो सकती है। (मान लीजिए 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'}]}]
-2
Lucifer_Latif 15 जिंदा 2021, 16:18
3
जब आप कोई प्रश्न पूछते हैं तो आप यहां SO में स्निपेट कर सकते हैं
 – 
Aalexander
15 जिंदा 2021, 16:19
1
हमें बाहरी लिंक पर भेजने के बजाय कृपया एक न्यूनतम प्रतिलिपि प्रस्तुत करने योग्य उदाहरण साझा करें
 – 
Mureinik
15 जिंदा 2021, 16:20
आपके अपेक्षित आउटपुट में user 10 कहां गया?
 – 
Jamiec
15 जिंदा 2021, 16:24
मुझे उस न्यूनतम प्रतिलिपि प्रस्तुत करने योग्य डेमो और स्निपेट्स के लिए बेहद खेद है। अद्यतन प्रश्न। धन्यवाद @ एलेक्स
 – 
Lucifer_Latif
15 जिंदा 2021, 16:25
@ जैमीक .. इसके लिए खेद है .. अपडेट किया गया
 – 
Lucifer_Latif
15 जिंदा 2021, 16:28

1 उत्तर

सबसे बढ़िया उत्तर

यह बिल्कुल आसान तरीका होगा कि उपयोगकर्ताओं को केवल राउंड-रॉबिन आवंटित किया जाए। यह सटीक आउटपुट नहीं देता है जो आपने कहा था कि आप चाहते थे, लेकिन उपयोगकर्ताओं को समान रूप से जितना संभव हो उतना समान रूप से वितरित करने का एक ही अंतिम लक्ष्य है:

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);
1
Jamiec 15 जिंदा 2021, 16:30
आपके त्वरित उत्तर के लिए धन्यवाद .. यदि आप मेरा कोड स्निपेट चलाते हैं तो लॉग उस क्रम में 2,2,2,3 प्रिंट करेंगे, मुझे केवल उस क्रम में उपयोगकर्ताओं को धक्का देना चाहिए
 – 
Lucifer_Latif
15 जिंदा 2021, 16:37