[英]Compare arrays in loop - javascript
我正在做一個彩票系統,我需要確保每個數組都是不同的。 這是我的代碼:
var intNumberOfBets = 10;
let aLotteryTicket=[];
let aData = [];
for(intI = 0; intI <intNumberOfBets; intI++){
let oCasilla ={};
oCasilla.block=[];
for(intI = 0; intI <intNumberOfBets; intI++){
let oCasilla ={};
oCasilla.block=[];
每個“彩票”都有一個由5個數字組成的數組。 他們可以具有與其他人相同的數字,但位置不同。
for (let intB=1;intB<=5;intB++)
{
for(let intA=1;intA<=50; intA++){ aLotteryTicket.push(intA); }
oCasilla.block.push(aLotteryTicket.splice(parseInt(Math.random()*aLotteryTicket.length),1)); // ADD 5 NUMBERS RANDOMLY TO ARRAY
};
oCasilla.block.sort(function (a,b){ return (parseInt(a)-parseInt(b));});
aData.push(oCasilla);
alert(aData[intI].block); // show generated arrays
}//END FOR
在將每個數組添加到最終數組aData []之前,如何防止每個數組彼此相同?
示例:如果我將數組5,6,7,8,9添加到oCasilla.block = []; ,我需要檢查oCasilla.block = []中是否沒有其他5,6,7,8,9;
提前致謝
您可以使用票證的一組字符串表示形式(使用join(',')
用逗號分隔的數字表示)來跟蹤已添加的內容,並且僅在先前未創建票證的情況下才添加。
function generateTicket() { // generate an array with 5 unique random numbers let a = new Set(); while (a.size !== 5) { a.add(1 + Math.floor(Math.random() * 50)); } return Array.from(a); } let oCasilla = { block: [] }; let addedTickets = new Set(); // add stingified ticket arrays here // add 10 unique tickets to oCasilla.block while (oCasilla.block.length !== 10) { const ticket = generateTicket(); if (!addedTickets.has(ticket.join(','))) { oCasilla.block.push(ticket); addedTickets.add(ticket.join(',')); } } console.log(oCasilla);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.