Soy muy nuevo en JavaScript pero tengo buena experiencia con C y Java. Por alguna razón, mi código a continuación no completará la matriz con valores que no sean indefinidos. Estoy tratando simplemente de llenar una matriz con un conjunto aleatorio de números para un juego de blackjack
let randomSuite; let randomNum let count = 0; var cards = new Array(56); window.onload = function main(){ const suites = [ "H", "D", "S", "C" ]; for(let i = 0 ; i < 56 ; i++){ randomNum = (Math.random * 12) + 1; randomSuite = Math.random * 3; cards.push = randomNum; console.log(cards[i]); count++; } alert(cards[1]); } function hitFunc(){ alert("works " + cards[0]); } *{ margin: 0; padding : 0; font-family: sans-serif; } .main{ width: 100%; height: 100vh; background-color:black; } .img1{ position: relative; z-index: -1; margin: 10px auto 20px; display: block; width: 75%; height: 75%; } .img2{ position: relative; z-index: 1; margin: 10px auto 20px; display: block; bottom: 200px; right: 400px; width: 7%; height: 7%; } .hitButton { z-index: 1; position: relative; text-align: center; left: 225px; bottom: 550px; } .center { display: block; margin-left: auto; margin-right: auto; width: 50%; color: aliceblue; object-position: center; }Esto es lo que tengo. Las alertas se utilizan para mostrar que la función se está completando. Cualquier ayuda es apreciada Por favor, deje una explicación también. Esta es mi primera publicación sobre el desbordamiento de pila. Avíseme si hay alguna manera de mejorar la calidad de mi publicación.
Math.random es una función; usar Math.random()push , use cards.push(randomNum)new array(56) pero como está usando push , necesitará crear una matriz vacía para que esté presionando al índice deseado. De lo contrario, en lugar de push , simplemente configúralo en el índice: cards[i] = randomNumcount ya que el iterador de bucle ( i ) tiene el mismo valor let randomSuite; let randomNum var cards = new Array(); window.onload = function main(){ const suites = [ "H", "D", "S", "C" ]; for(let i = 0 ; i < 56 ; i++){ randomNum = (Math.random() * 12) + 1; randomSuite = Math.random() * 3; cards.push(randomNum); } console.log(cards) } *{ margin: 0; padding : 0; font-family: sans-serif; } .main{ width: 100%; height: 100vh; background-color:black; } .img1{ position: relative; z-index: -1; margin: 10px auto 20px; display: block; width: 75%; height: 75%; } .img2{ position: relative; z-index: 1; margin: 10px auto 20px; display: block; bottom: 200px; right: 400px; width: 7%; height: 7%; } .hitButton { z-index: 1; position: relative; text-align: center; left: 225px; bottom: 550px; } .center { display: block; margin-left: auto; margin-right: auto; width: 50%; color: aliceblue; object-position: center; } Math.random() y push() son funciones, no variables, por lo tanto, debe llamarlas usando () .
push() se agregará a la matriz push() agregará un valor a la matriz. Ya inicializaste una matriz con 10 valores. Presionar nuevos valores aumentará el tamaño de la matriz pero no agregará valores en los primeros 10 lugares.
const array = new Array(10); for(let i = 0; i < 10; i++){ array.push(i); } console.log(array); .as-console-wrapper { max-height: 100% !important; top: 0; } En su lugar, debe usar array[i] = value; para establecer un valor en una posición determinada.
const array = new Array(10); for(let i = 0; i < 10; i++){ array[i] = i; } console.log(array); .as-console-wrapper { max-height: 100% !important; top: 0; } Si desea tener una forma más funcional de hacer esto, como es típico en JavaScript, puede usar map() :
const array = [...new Array(10)].map((_, index) => index); console.log(array); .as-console-wrapper { max-height: 100% !important; top: 0; }