Mischiare un array: mix()

Scritto il 23 Aprile 2007
Nella categoria Javascript, Produzioni Proprie | Scrivi un commento
Tag: , , ,

Oggi altra funzione che potrebbe tornare utile: mix() che mischia un array in modo casuale; non mi addentro sul significato di casuale, dico soltanto che crea un array aggiungendo ogni volta un elemento preso a caso dall’array originale.

Array.prototype.mix = function() {
	var ret = new Array();
	while (this[0]) {
		ret.push(
			this.splice(
				parseInt(Math.random()*this.length),
				1)[0]
			)
	}
	while (ret[0]) {
		this.push(ret.shift());
	}
	return this;
}

La funzione oltre che mischiare l’array lo restituisce, quindi potete subito agire sul risultato di mix().

Chiaramente è applicabile anche al di fuori di un array, basta che l’oggetto supporti push, pop e splice; inoltre con pochissimi cambiamenti potete renderla una funzione esterna, io preferisco però la programmazione ad oggetti e quindi la implemento come membro di una classe.

Non c’è molto altro da spiegare, viene sempre utile anche se avete una cosa da mischiare, per esempio un elenco di nomi (stringhe in generale). A me è servita proprio per mischiare un elenco di file, resi in array e poi mischiati ;)