Very short snippet: shuffle() in Javascript e Actionscript

In PHP esiste una comoda funzione chiamata shuffle() che permette di mescolare un array (vedi Very short trick: prendere elementi casuali da un array in PHP). Un’ottima versione per Javascript l’ho trovata qui. Qui sotto il codice leggermente rivisto:

1
2
3
Array.prototype.shuffle = function() {
for(var j, x, i = this.length; i; j = Math.floor(Math.random() * i), x = this[--i], this[i] = this[j], this[j] = x);
}

Rispetto all’originale ho esteso l’oggetto Array e inserito Math.floor() al posto di parseInt(), in quanto da test effettuati è risultato estremamente più veloce, almeno sulla mia macchina e con FireFox 3.

In ActionScript 3.0 l’ho usata all’interno della classe MatrixArray:

1
2
3
4
5
6
7
8
/**
 * Mescola in modo casuale la matrice
 *
 */

public function shuffle():void {
    // thanks to http://jsfromhell.com/array/shuffle
    for(var j, x, i = __len; i; j = Math.floor(Math.random() * __len), x = this[--i], this[i] = this[j], this[j] = x);
}

4 commenti a: “Very short snippet: shuffle() in Javascript e Actionscript”

  1. 02 apr, 2009 Very short snippet: estendere un array Actionscript con il metodo shuffle() | Undolog.com:

    [...] parlato già di come realizzare il metodo shuffle() in Javascript e Actionscript. Mi sono accorto, tuttaavia, di non aver sottolineato che anche Actionscript è in grado di [...]

  2. 02 apr, 2009 DaveOnCode:

    This is my own solution: http://www.daveoncode.com/2009/01/08/implementing-arrayshuffle-in-actionscript/

    It’s only 3 lines of code and it works fine :)

  3. 02 apr, 2009 Giovambattista Fazioli:

    @DaveOnCode: very short snippet :) thx

  4. 26 ott, 2010 Objective-C: subclassing e Categorie | Undolog.com:

    [...] Come visto in Very short snippet: shuffle() in Javascript e Actionscript. [...]

Lascia un commento

TAG XHTML PERMESSI: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERIMENTO CODICE:
<pre></pre> // blocco generico
					<code></code> // blocco generico
					[cc_actionscript][/cc_actionscript] // Actionscript
					[cc_actionscript3][/cc_actionscript3] // Actionscript 3
					[cc_css][/cc_css] // CSS Style Sheet
					[cc_html][/cc_html] // HTML
					[cc_js][/cc_js] // Javascript
					[cc_objc][/cc_objc] // Objective-C
					[cc_php][/cc_objc] // PHP
					[cc_sql][/cc_sql] // SQL


Stop SOPA