Сравнить массивы в цикле - JavaScript - PullRequest
0 голосов
/ 25 октября 2018

Я занимаюсь лотереей, и мне нужно убедиться, что каждый массив отличается.Это мой код:

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;

Заранее спасибо

1 Ответ

0 голосов
/ 25 октября 2018

Вы можете использовать набор строковых представлений (числа, разделенные запятыми, используя 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...