Tengo un pequeño problema. Necesito obtener 4 imágenes aleatorias de una matriz de 6 elementos, pero no sé cómo hacerlo. Las imágenes deben repetirse.
let array = ["../media/pawn.png", "../media/rook.png", "../media/knight.png", "../media/bishop.png", "../media/queen.png", "../media/king.png"]; shuffleArray(array); array.forEach(function(image) { let img = document.createElement('img'); img.src = image; img.height = "45"; img.width = "50"; document.getElementById("random").appendChild(img); }); function shuffleArray(array) { for (let i = array.length - 1; i > 0; i--) { let j = Math.floor(Math.random() * (i + 1)); let temp = array[i]; array[i] = array[j]; array[j] = temp; } }Si la imagen debe repetirse, puede usar simple aleatorio como ese:
const array = [1,2,3,4,5,6]; for(var i = 0; i < 4; i++){ console.log(array[Math.floor(Math.random() * 5)]); }Como puede ver, el registro puede mostrarle la misma imagen (en mi ejemplo, solo un número).
let array = ["../media/pawn.png", "../media/rook.png", "../media/knight.png", "../media/bishop.png", "../media/queen.png", "../media/king.png"]; const images = Array(4).fill(0).map(() => array[~~(Math.random() * array.length)]); console.log(images);Puedes resolver esto usando un pequeño bucle.
let images = ["../media/pawn.png", "../media/rook.png", "../media/knight.png", "../media/bishop.png", "../media/queen.png", "../media/king.png"]; function shuffleImages () { let temp = [] while (temp.length < 4) { temp.push(images[Math.floor((Math.random() * images.length - 1) + 1)]) } return temp; } let array = shuffleImages() console.log(array) array.forEach(function(image) { let img = document.createElement('img'); img.src = image; img.height = "45"; img.width = "50"; document.getElementById("random").appendChild(img); }); <div id="random"></div>