Sto lavorando ad uno script che molto probabilmente troverete nelle pagine di PRO tra breve. Un'operazione piuttosto ricorrente dello script è verificare se una stringa è contenuta all'interno di un'altra. Inizialmente il codice che ho usato era qualcosa del tipo:
if(s.indexOf("stringa_da_cercare")>=0){
//fai qualcosa
}
Sebbene sia un approccio semplice, trovo che sacrifichi un po' la leggibilità . Mi sono chiesto: ci sarà un modo un po' più pulito per farlo?
Mi sono documentato un po' e ho scritto il mio primo prototipo. L'oggetto String (di cui indexOf fa parte) può essere esteso con metodi propri attraverso i prototipi. Ecco quindi il prototipo del metodo find
per le stringhe:
String.prototype.find=function(what){
return(this.indexOf(what)>=0 ? true : false);
}
Le righe precedenti nello script vanno sistemate necessariamente all'esterno di ogni altra funzione o all'interno di una funzione che viene chiamata in ogni caso: a questo punto potremo usare find
sulle stringhe, sapendo che restituirà vero o falso a seconda che abbia trovato o meno la stringa da cercare. Il codice che abbiamo visto all'inizio diventa quindi:
if(s.find("stringa_da_cercare")){
//fai qualcosa
}
Trovo che sia decisamente più leggibile. Concludo segnalando Usefull prototype methods for JavaScript
con molti prototipi già pronti che potranno esservi utili per manipolare stringhe e array.