所以我設法生成了一個“記分板”字典:
{
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'
}
但是現在我不確定如何檢查鍵字串中的第 1/2/3 項,然后從每個“類別 (1st,2nd,3rd)”中隨機選擇一定數量的條目,以便輸出一個新字典,例如:
如果我想隨機選擇 3 1st、 22nd和3rd條目,新字典將是
{
Player2: '10 1st',
Player4: '10 1st',
Player5: '10 1st',
Player6: '8 2nd',
Player9: '8 2nd',
Player11: '5 3rd',
Player12: '5 3rd'
}
謝謝閱讀..
uj5u.com熱心網友回復:
也許將物件轉換為條目的隨機陣列,然后使用 篩選出每種型別的單獨陣列<Array>.filter,然后<Array>.slice在每個陣列上使用以從中獲取 x 數量的條目,然后使用更新的條目重建物件:
使用示例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);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386378.html
標籤:javascript 节点.js 字典
