Entonces logré generar un diccionario de "marcador":
{ Player1: '10 1st', Player2: '10 1st', Player3: '10 1st', Player4: '10 1st', Player5: '10 1st', Player6: '8 2nd', Player7: '8 2nd', Player8: '8 2nd', Player9: '8 2nd', Player10: '5 3rd', Player11: '5 3rd', Player12: '5 3rd' }Pero ahora no estoy seguro de cómo verificar si 1st/2nd/3rd en la cadena clave y luego seleccionar aleatoriamente cierta cantidad de entradas de cada "categorías (1st, 2nd, 3rd)" para generar un nuevo diccionario como:
Si quiero seleccionar aleatoriamente 3 1st , 2 2nd y 3rd entradas, el nuevo diccionario será
{ Player2: '10 1st', Player4: '10 1st', Player5: '10 1st', Player6: '8 2nd', Player9: '8 2nd', Player11: '5 3rd', Player12: '5 3rd' }Gracias por leer..
Tal vez convierta el objeto en una matriz aleatoria de entradas y luego filtre matrices separadas para cada tipo con <Array>.filter , luego use <Array>.slice en cada matriz para obtener una cantidad x de entradas y luego reconstruya el objeto con las entradas actualizadas:
Ejemplo usando numFirst = 3, numSecond = 2, numThird = 2 :
const data = { Player1: '10 1st', Player2: '10 1st', Player3: '10 1st', Player4: '10 1st', Player5: '10 1st', Player6: '8 2nd', Player7: '8 2nd', Player8: '8 2nd', Player9: '8 2nd', Player10: '5 3rd', Player11: '5 3rd', Player12: '5 3rd' } let numFirst = 3; let numSecond = 2; let numThird = 2; const entries = Object.entries(data).sort(() => .5 - Math.random()); const first = entries.filter(a => a[1].endsWith('1st')).slice(0, numFirst); const second = entries.filter(a => a[1].endsWith('2nd')).slice(0, numSecond); const third = entries.filter(a => a[1].endsWith('3rd')).slice(0, numThird); const filteredData = Object.fromEntries([...first, ...second, ...third]); console.log(filteredData);