tengo este codigo
bot.webex.memberships.list({roomId: bot.room.id}) .then((memberships) => { for (const member of memberships.items) { if (member.personId === bot.person.id) { // Skip myself! continue; } let names = (member.personDisplayName) ? member.personDisplayName :member.personEmail; bot.say(`Hello ${member.personDisplayName`);Que producen múltiples salidas línea por línea como esta:
Juan Dou
alfredo pennivor
michel lee
Necesito crear una matriz a partir de esta salida, aleatorizar esta matriz y el bot debe decir solo un nombre aleatorio de la matriz. Tenga en cuenta que el número de nombres puede ser diferente
PD: trato de usar split pero obtengo 3 matrices diferentes en lugar de una.
Primero, en esta pregunta se explica cómo tomar un elemento aleatorio de una matriz.
Para mostrar solo un elemento aleatorio, que NO es su propio nombre, entonces esto debería funcionar para usted. Dado que memberships.items ya es una matriz, podemos extraer directamente un elemento aleatorio de ella.
Código de ejemplo:
bot.webex.memberships.list({roomId: bot.room.id}) .then((memberships) => { let member // take random member and repeat until it's not the current user. do { const items = memberships.items // get random element // https://stackoverflow.com/questions/5915096/get-a-random-item-from-a-javascript-array/5915122#5915122 member = items[Math.floor(Math.random()*items.length)]; } while(member.personId === bot.person.id); bot.say(`Hello ${member.personDisplayName}`) })Puede filter los miembros que no son usted y luego map esa matriz de objetos para crear una lista de nombres. Luego selecciona un nombre aleatorio de esa matriz.
bot .webex .memberships .list({roomId: bot.room.id}) .then(logRandomName);Aquí hay un ejemplo de trabajo basado en su código.
const bot = { person: { id: 4, name: 'Joe' } }; const memberships=[{personId:1,name:"Fozzie Bear"},{personId:2,name:"Carlos The Jackal"},{personId:3,name:"Bob From Accounting"},{personId:4,name:"Joe"},{personId:5,name:"Gunther"},{personId:6,name:"Ali"},{personId:7,name:"Renaldo"}]; function logRandomName(memberships) { // First `filter` over the memberships array to // to produce a new array that doesn't contain the // member object that matches the bot.person.id const names = memberships.filter(member => { return member.personId !== bot.person.id; // And then `map` over that array to return an // array of names }).map(member => member.name); const rnd = Math.floor(Math.random() * names.length); // Then pick a random name from the names array console.log(`Hallo ${names[rnd]}`); } logRandomName(memberships);