newbie to Javascript here and just practicing by making a random Lottery number generator. The aim is to make 10 lines of numbers. Each line of numbers will take one random number from a ‘hotNumbers’ array, one random number from a ‘luckyNumbers’ array and 4 totally random numbers between 1-45.
I have it all working fine. The code just looks like it is repeating itself though and I just wonder if there is a more efficient way to do what I’m doing here? I’ve sat looking at it for hours but I can’t see a way to do things better, although I’m sure there is one.
My code:
let hotNumbers = [34, 45, 13, 18, 38, 14, 43, 33, 20, 27, 17];
let luckyNumbers = [7, 11, 5, 31, 12, 30];
let newNumbers = [];
const line1 = document.querySelector('.numbers1')
const line2 = document.querySelector('.numbers2')
const line3 = document.querySelector('.numbers3')
const line4 = document.querySelector('.numbers4')
const line5 = document.querySelector('.numbers5')
const line6 = document.querySelector('.numbers6')
const line7 = document.querySelector('.numbers7')
const line8 = document.querySelector('.numbers8')
const line9 = document.querySelector('.numbers9')
const line10 = document.querySelector('.numbers10')
const generate = document.querySelector('.numbersButton');
const predictor = () => {
reset();
let randomHotNumber = hotNumbers[Math.floor(Math.random() * hotNumbers.length)];
let randomLuckyNumber = luckyNumbers[Math.floor(Math.random() * luckyNumbers.length)];
newNumbers.push(randomHotNumber, randomLuckyNumber);
while (newNumbers.length < 6) {
let newNumber = Math.floor(Math.random() *46);
if (newNumbers.indexOf(newNumber) === -1 && newNumber != 0) {
newNumbers.push(newNumber);
}
}
newNumbers.sort(function(a, b){return a-b});
}
const reset = () => {
newNumbers = [];
}
const lineNumbers = () => {
predictor();
line1.innerText = newNumbers;
predictor();
line2.innerText = newNumbers;
predictor();
line3.innerText = newNumbers;
predictor();
line4.innerText = newNumbers;
predictor();
line5.innerText = newNumbers;
predictor();
line6.innerText = newNumbers;
predictor();
line7.innerText = newNumbers;
predictor();
line8.innerText = newNumbers;
predictor();
line9.innerText = newNumbers;
predictor();
line10.innerText = newNumbers;
}
generate.addEventListener("click", lineNumbers);