Acabo de comenzar con JS y estoy tratando de obtener elementos aleatorios de una matriz. La cantidad se decide por la entrada de un usuario, y esa parte funciona, creo. Las funciones son llamadas por onClick de botones. Explorar Internet me ha dado la solución a continuación como la mejor, pero no puedo hacer que la parte de buscar elementos funcione incluso en console.log.
Lo que realmente veo en la consola es una matriz vacía [] con longitud: 0
¿Qué le pasa a mi código? Esta es la forma de hacerlo que sigo viendo en los foros y la gente dice que les funciona y es básicamente el mismo código con palabras cambiadas.
userArray = []; function addElement(){ let element = document.getElementById("add-input").value; userArray.push(element); document.getElementById("add-input").value = ""; } function getElements(){ let amount = document.getElementById("amount-input").value; newList = []; for(i=0; i<amount.value; i++){ randomElement = userArray[Math.floor(Math.random() * userArray.length)]; newList.push(randomElement); } console.log(newList); } <div class="phase-add"> <p class="label-p">Input an element</p> <div class="input-box"> <input class="add-input" type="text" name="add-input" id="add-input"> <button class="add-btn" onclick="addElement()">Add</button> </div> </div> <div class="phase-get"> <div class="input-box"> <p class="label-p">Choose the amount</p> <input type="text" name="amount-input" id="amount-input"> </div> <button onclick="getElements()">Get elements</button> </div>La amount variable ya es una cadena/número. No necesita volver a obtener el valor en el bucle for. Cambiar a for(i=0; i<amount; i++){ en el ciclo for solucionará el problema.
userArray = []; function addElement(){ let element = document.getElementById("add-input").value; userArray.push(element); document.getElementById("add-input").value = ""; } function getElements(){ let amount = document.getElementById("amount-input").value; console.log(amount) newList = []; for(i=0; i<amount; i++){ randomElement = userArray[Math.floor(Math.random() * userArray.length)]; newList.push(randomElement); } console.log(newList); } <input id = "add-input" type = "text" ></input> <button onclick = "addElement()">Add Element</button> <input id = "amount-input" type = "number"></input> <button onclick = "getElements()">Get Elements</button>