A ver pues, un primer intento que seguramente sea la forma en que lo resolverías "a lo bestia"
Código PHP:
var miArray = ['flgo', 20, 'pgre', 22, 13, 8, 16, 'frkiysoj', 9, Infinity, 11, 14, true, 'bstuhcv', 'bhatnck', 7, 17, 'nusfgcvd', 19, 21, 'gmwp', 'incauo', 'hqu', { color: "rojo", forma: "cuadrado" }, 'kficoprn', 'qofxpdsn', 'ugdoebq', 'kxmhs', 3, 'bfce', 'neduh', 15, 'ueifchsj', 'kgdmj', 'ojk', 'vfqoyhli', 'buno', 18, 'nrkmf', 12, 6, 23, 'hnvroupj', 'gkdtnhq', document.body, 10, 'qghsfpdr', 24, 1, window.screen, undefined, null, 0, 'ewgmq', NaN, 4, function () { }, 2, 5, window.onload, void(0), -Infinity];
var yaElegidos = [];
var largo = miArray.length;
function dameElemento() {
largoElegidos = yaElegidos.length;
if ( largoElegidos < largo ) {
// termina con 'indice' siendo un índice de la matriz que todavía no fue elegido.
while ( yaElegidos.indexOf(indice = Math.floor( Math.random() * largo )) !== -1 );
yaElegidos[largoElegidos] = indice;
return miArray[indice];
}
else
return false;
}
Opera me da un error en el while, 'type mismatch'. No logro identificar el por qué
Saludos.