簡體   English   中英

比較循環中的數組-JavaScript

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM