28.05.2013 Views

javascript by example

javascript by example

javascript by example

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Capitolo 1<br />

Linguaggio<br />

Questo succede perché l'ordinamento avviene con il confronto del<br />

valore numerico dei caratteri (il carattere “A” per esempio equivale<br />

a 65, mentre “a” è 97). A questo si può porre rimedio con una funzione<br />

di sorting personalizzata da associare al prototipo Array:<br />

Array.prototype.sortInsensitive = function (){<br />

this.sort (function (elm1,elm2){<br />

var v1 = elm1.toString().toLowerCase();<br />

var v2 = elm2.toString().toLowerCase();<br />

}<br />

});<br />

if(v1==v2) return 0;<br />

else return (v1>v2) ? 1:-1;<br />

che richiama il sort standard applicandogli però una funzione di<br />

callback che verrà richiamata in fase di comparazione tra i due<br />

elementi operando un confronto case-insensitive.<br />

28 Ordinare un Array con più opzioni<br />

Sempre agendo sul prototipo di Array è possibile dotare quest'ultimo<br />

di una funzione di sorting un po' più completa che<br />

consenta di specificare la modalità (case sensitive o case insensitive)<br />

e la direzione (ascendente o discendente):<br />

Array.prototype.sortFull = function (insensitive,desc){<br />

}<br />

var isInsensitive = insensitive || true; //default true<br />

var isDesc = desc || false; //default false<br />

if(isInsensitive) this.sortInsensitive();<br />

else this.sort();<br />

if (isDesc) this.reverse();<br />

I libri di ioPROGRAMMO/Javascript <strong>by</strong> Example 35<br />

JAVASCRIPT<br />

BY EXAMPLE

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!