Newsgroup: it.comp.lang.javascript
Titolo: riconoscere quando una  stringa è un numero

se in un array ho delle stringhe di cui alcuni sono numeri
come si fa ad individuarli?

 come si fa ad individuarli?
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Functions:isNaN
-- 
~ Se i miei cattivi pensieri non fossero caricati a salve, ogni giorno
sarebbe una strage.

 come si fa ad individuarli?
dipende ovviamente da cosa intendi per numeri, quale separatore decimale
stai usando etc; comunque sia, in generale:
 !isNaN:
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:Predefined_Functions:isNaN_Function
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.

 
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:Predefined_Functions:isNaN_Function
"50"
"casa"
"luce"
"100blu"
"giallo20"
"-100"
"20,5"
"20.5"
dalla lista sopra riconoscere solo:
"50"
"-100"
"20,5"
"20.5"
come numeri
ringrazio per vs. suggerimenti; devo fare ora alcuni test;

 
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:Predefined_Functions:isNaN_Function
"50"
"casa"
"luce"
"100blu"
"giallo20"
"-100"
"20,5"
"20.5"
dalla lista sopra riconoscere solo come numeri le seguenti stringhe:
"50"
"-100"
"20,5"
"20.5"
poi che funzione si usa per trasformare queste stringhe in numeri?
pensavo a toNumber ma nel sito del link indicatomi, se faccio una ricerca
sembra non esistere tale funzione

 poi che funzione si usa per trasformare queste stringhe in numeri?
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Functions:parseFloat
-- 
"Voi abili a tenere sempre un piede qua e uno là
 avrete un avvenire certo in questo mondo qua
 però la dignità
 dove l'avete persa?"
									    V.R.

nell'altra risposta ho fatto un esempio d'uso, ma non riesco poi a capire
che funziona usare per una conversione dei dati a numero

 che funziona usare per una conversione dei dati a numero
Puoi usare l'operatore unario "+".
(Da non confondersi con l'operatore di addizione/concatenazione "+").
Se vuoi modificare lo stesso array:
	var arr = [	"50","casa","luce","100blu",
			"giallo20","-100", "20,5","20.5"];
	for ( var i=0; i<arr.length; i++ )
		if ( !isNaN(arr[i]) )
			arr[i] = +arr[i];
Se invece tu volessi solo un array con numeri e uno con stringhe:
	var 	strArr	= [], 
		numArr	= [],
		arr	= [	"50","casa","luce","100blu",
				"giallo20","-100", "20,5","20.5"];
 
	for ( var i=0; i<arr.length; i++ )
		if ( isNaN(arr[i]) )
			strArr[strArr.length] = arr[i];
		else
			numArr[numArr.length] = +arr[i];
N.B.
Al contrario di quanto hai detto, una stringa come "20,5" non viene
considerata un numero; il separatore dei decimali in JS č il punto.
Controlla meglio.
-- 
~ ..ma in effetti il  concetto di WYSIWYG (quello che vedi č quello
che ottieni) si applica ai computer malissimo, cosě  come si applica
alle  donne... (The  Real Programmer)

> Puoi usare l'operatore unario "+".
è come il parsefloat?
riguardo il punto spearatore delle decimali
ma per prezzo in euro come si risolve visto che
a video è la virgola il separatore?

 a video è la virgola il separatore?
Quello è tutt'altro tipo di problema. E ne abbiamo già discusso, io e
te, lo scorso anno:
http://groups.google.it/group/it.comp.lang.javascript/browse_thread/thread/84936bcbeb6b9059/f632ce06a676dec0
-- 
~ Ci sono tre modi di fare le cose.
Giuste, sbagliate e come dico io. (Robert De Niro in "Casinò")

riguardo il punto come decimale, pero' rileggendo la discussione, 
la soluzione quindi è:
da parte dell'inserimento: si deve inserire il punto per i decimali,
si informa l'utente e/o si forza);
ma da parte dei dati restituiti a video, ad esempio una tabella prezzi,
si dovrebbe per pagine riferite ad utenti italiani, far vedere la virgola;
hai qualche buon link con esempi di tali 2 casi?

 si dovrebbe per pagine riferite ad utenti italiani, far vedere la virgola;
Si, ma a quel punto il numero lo devi riconvertire in stringa, quindi
il problema non si pone.
Per intenderci, se a te non serve gestire un prezzo come numero, puoi
benissimo lasciarlo in stringa. Se invece vuoi farci delle operazioni
devi sostituire la virgola col punto, convertirlo, e lavorarci.
E se devi rivisualizzarlo, fai l'operazione inversa:
var 	prezzo	= "99,99",
	n	= +prezzo.replace(",",".");
if ( n > 50 ){
	n-=n*0.15;
}
alert("Il prezzo è: "+ (n.toFixed(2).replace(".",","));
Un esempio stupido per indicare che se il costo è superiore a 50 euro
applichi uno sconto del 15%.
Questo mostra le fasi di conversione sia in un senso che nell'altro.
-- 
~ "Quando i morti camminano, signori, bisogna smettere di uccidere.
O si perde la guerra." (Zombie)