Obtuve una secuencia de comandos Random Lotto Generator para trabajar en JavaScript en un juego. Ahora, estoy tratando de hacer que funcione para varios juegos de lotería y los objetos calculados eran la mejor manera de ajustarse a los diferentes formatos de cada juego para dar cuenta de diferentes grupos de números, diferentes números seleccionados, 'bolas de bonificación', números duplicados, etc.
const game = [{name: "Lotto Texas", balls: 6, numbers: 54, start: 1, duplicates: false, bonusBall: false, results: []}, {name: "Pick 3", balls: 3, numbers: 10, start: 0, duplicates: true, bonusBall: false, results: []}, {name: "Powerball", balls: 5, numbers: 69, start: 1, duplicates: false, bonusBall: true, bonusNumbers: 26, results: [], bonus: []}]; game.forEach (lottoResults()); // gets results function lottoResults(){ this.results.length = this.balls; //Here is where the error occurs. This is supposed to assign the balls property to the results array's length value. if (!this.duplicates){ //checks if duplicates allowed this.results.forEach(duplicateCheck()); } else{ this.results.forEach(lottoBall()) } if(this.bonusBall){ this.bonus.push(lottoBall(this.bonusNumbers, this.start)); //assigns a number to bonus ball } }Estoy tratando de establecer una matriz en blanco inicializada en cada objeto, con la cantidad con la propiedad 'bolas' (refiriéndose a las bolas de lotería) estableciendo qué tan grande depende la matriz del juego. Sin embargo, cada vez que trato de configurar eso, sigo recibiendo un TypeError no capturado: Undefined no es una función. Intenté establecer el valor de la propiedad del objeto en una variable primitiva, estableciendo la longitud de la matriz dentro de las variables del objeto inicializado, pero sigo teniendo el mismo error de alguna forma. ¿Estoy haciendo un mal uso del objeto y debería llamar a los valores de manera diferente?
Está invocando lottoResults aquí dentro de forEach colocando () después del nombre de la función
game.forEach (lottoResults());En su lugar, debe pasar la función como esta
game.forEach (lottoResults);referencia: https://www.w3schools.com/jsref/jsref_foreach.asp
Nota: Lo mismo se aplica a duplicateCheck y lottoBall pasados a forEach, elimine el ()