Come posso ricavare, con javascript, da un numero intero a 2 cifre le decine e le unità che lo compongono?
Come posso ricavare, con javascript, da un numero intero a 2 cifre le decine e le unità che lo compongono?
devi usare split, funziona anceh con i numeri
Un tardo hegeliano di Busalla / allevava un gorilla nella stalla
citando Adorno nell notti chiare / finché il primate stanco di ascoltare
lo strangolò con una sciarpa gialla Dillo Con Parole Sue
unità => numero % 10
decine => Math.floor(numero / 10) % 10
Questa è matematica, non JavaScript![]()
No
Un tardo hegeliano di Busalla / allevava un gorilla nella stalla
citando Adorno nell notti chiare / finché il primate stanco di ascoltare
lo strangolò con una sciarpa gialla Dillo Con Parole Sue
Sono d'accordo al 100%Un buon programmatore deve usare il codice + veloce
Prima di sparare a caso per sostenere la tua tesi, fai SEMPRE qualche test.e split è + veloce
Ho scritto due funzioni, una con il tuo metodo e una con il mio. Entrambe ritornano un oggetto così:
codice:// Ad esempio con il numero 1234 { decine: 3, unita: 4 }
Con split:
Con la matematica:codice:function useSplit(n) { var cifre = n.toString().split(""); return { decine: +cifre[cifre.length - 2], unita: +cifre[cifre.length - 1] }; }
codice:function useMath(n) { return { decine: Math.floor(n / 10) % 10, unita: n % 10 }; }
Questo è il codice di test:
Eseguendo il codice in Chrome per Android (probabilmente su un PC si otterrebbero tempi minori) ottengo:codice:[useSplit, useMath].forEach(function (f) { var i = 100000, d = new Date(); while (i--) f(12345678); document.body.innerHTML += new Date() - d; document.body.innerHTML += "<br>"; });
useSplit => 445 ms
useMath => 36 ms
Spero di essere stato abbastanza oggettivo
Edit
Ho riscritto la funzione useSplit così che, quando le viene passato un numero minore di 10, restituisca 0 come decine (prima restituiva null). useMath funzionava già.
codice:function useSplit(n) { var cifre = n.toString().split(""); return { decine: +cifre[cifre.length - 2] || 0, unita: +cifre[cifre.length - 1] }; }
Ultima modifica di tampertools; 05-01-2015 a 12:34
No
ammetto di aver bluffato quando ho detto che è + veloceio conosco bene il php, da un po' di tempo do un'occhiata anche alla sezione javascript perché secondo me insegnando si impara
![]()
Un tardo hegeliano di Busalla / allevava un gorilla nella stalla
citando Adorno nell notti chiare / finché il primate stanco di ascoltare
lo strangolò con una sciarpa gialla Dillo Con Parole Sue
perché secondo me insegnando si impara
100% d'accordo
Imparando su questo forum ho imparato tantissimo rispondendo alle domande
Scusa se prima mi sono scaldato un po'
Per TommyBerna:
Se le funzioni devono funzionare anche con numeri negativi, dimmelo che devo aggiustarle entrambe
No