Variablentyp überprüfen
HolySheepy
- javascript
Hi,
wie überprüfe ich in JavaScript am besten den "Typ" einer Variable?
Also ob nummerisch oder alphanummerisch
Hi,
wie überprüfe ich in JavaScript am besten den "Typ" einer Variable?
mittels typeof.
Cheatah
Hi,
wie überprüfe ich in JavaScript am besten den "Typ" einer Variable?
mittels typeof.
Cheatah
Hm, funktioniert das dann auch so wie ich will?
Also wenn ich nen String(!) habe mit "452" müsste es trotzdem Number sein :p Weil es eben nummerisch ist...
[latex]Mae govannen![/latex]
wie überprüfe ich in JavaScript am besten den "Typ" einer Variable?
mittels typeof.
Hm, funktioniert das dann auch so wie ich will?
Also wenn ich nen String(!) habe mit "452" müsste es trotzdem Number sein :p Weil es eben nummerisch ist...
Nein. Ein String ist ein String ist ein Tang^WString. Was darin steht, ist nicht wichtig, es bleibt ein String. Wernn du wissen willst, mußt du wohl über reguläre Ausrücke testen, ob ein String z.B. nur Ziffern/nur Buchstaben/whatever enthält.
Cü,
Kai
Grundlage für Zitat #1113.
Hi,
Also wenn ich nen String(!) habe mit "452" müsste es trotzdem Number sein :p Weil es eben nummerisch ist...
nein, ist es nicht - siehe Kais Antwort. Statt regulärer Ausdrücke kannst Du Dich aber Funktionen wie parseInt() bedienen.
Cheatah
@@Cheatah:
Statt regulärer Ausdrücke kannst Du Dich aber Funktionen wie parseInt() bedienen.
Mir käme !isNaN() in den Sinn.
Live long and prosper,
Gunnar
gruss in die runde,
Mir käme !isNaN() in den Sinn.
und ich wuerde den typ vorher noch
zwangskonvertieren und zusaetzlich
auf seine endlichkeit ueberpruefen:
var isKindOfNumber = (function (obj) {
obj = Number(obj);
return (!isNaN(obj) && isFinite(obj));
});
so long - peterS. - pseliger@gmx.net
nein, ist es nicht - siehe Kais Antwort. Statt regulärer Ausdrücke kannst Du Dich aber Funktionen wie parseInt() bedienen.
Erwischt er damit nicht auch Strings, die keine Zahlen sind? So wie "500xx" beispielsweise? Ich weiß nicht, ob das gewünscht ist (dem Wortlaut nach eher nicht).
hallo,
Also wenn ich nen String(!) habe mit "452" müsste es trotzdem Number sein :p Weil es eben nummerisch ist...
ich habe mir mal vor einiger zeit für ein problemchen das (glaube ich) in eine ähnliche richtung geht, folgendes funktiönchen gemacht:
String.prototype.isNumber = function ()
{
var l,lm,re;
re = /\d/g;
l = this.length;
lm = (this.match(re)) ?this.match(re).length :-1;
return (l==lm) ?true :false;
}
hat den horizont einer lokalen anwendung allerdings nie verlassen und ist deshalb ohne gewähr zu verwenden.
gruß,
pd
@@pother_dane:
ist deshalb ohne gewähr zu verwenden.
Besser gar nicht:
var l,lm,re;
re = /\d/g;
l = this.length;
lm = (this.match(re)) ?this.match(re).length :-1;
Wozu das Ganze? Wenn du schon einen regulären Ausdruck bemühst, solltest du '^' und '$' kennen und anwenden.
return (l==lm) ?true :false;
Wozu? l == lm
ist doch ein Boolescher Ausdruck mit eben dem Wahrheitswert, der zurückgegeben werden soll. Also:
return (l == lm);
Aber wozu das das Rad neu erfinden?
Live long and prosper,
Gunnar
hallo,
nie hätte ich behaupten wollen, meine lösung sei die ausgereifteste. ich wollte nur auch mal aus der lesenden passivität heraustreten und etwas beitragen. und hierfür:
return (l==lm) ?true :false;
Wozu?
l == lm
ist doch ein Boolescher Ausdruck mit eben dem Wahrheitswert, der zurückgegeben werden soll. Also:
return (l == lm);
schäme ich mich sogar ein wenig. wie doof, aber ehrlich!
dass isNaN() auch strings wie gewünscht verarbeitet wusste ich schlicht nicht, sonst hätte ich mir den "spass" mit dem funktiönchen tatsächlich gespart. my bad!
anhänglichst noch eine frage:
Wozu das Ganze? Wenn du schon einen regulären Ausdruck bemühst, solltest du '^' und '$' kennen und anwenden.
mir mag nicht so recht einfallen, wozu ich in diesem kontext '^' und '$' brauchen könnte.
herzlichst,
pd
@@pother_dane:
mir mag nicht so recht einfallen, wozu ich in diesem kontext '^' und '$' brauchen könnte.
Wolltest du nicht testen, ob der String von _Anfang_ bis _Ende_ aus Ziffern (und ggfs. Dezimaltrennzeichen und Vorzeichen) besteht?
Live long and prosper,
Gunnar
@@gunnar:
Wolltest du nicht testen, ob der String von _Anfang_ bis _Ende_ aus Ziffern (und ggfs. Dezimaltrennzeichen und Vorzeichen) besteht?
ja, das war mein anliegen mit dieser funktion/methode. mag sein, dass '^' und '$' zu einem eleganteren ergebnis führen, meine überlegung war aber: wenn die länge des strings und die länge der von .match() zurückgegebenen liste an gefundenen zahlen identisch sind, dann besteht der string ausschließlich aus zahlen. warum dann noch anfang und ende überprüfen?
gruß
pd
@@pother_dane:
meine überlegung war aber: wenn die länge des strings und die länge der von .match() zurückgegebenen liste an gefundenen zahlen identisch sind, dann besteht der string ausschließlich aus zahlen. warum dann noch anfang und ende überprüfen?
Nein, andersrum: Wenn du auf ^\d+$ (bzw. [1]+$ o.ä.) prüfst, warum dann noch die Längen ermitteln und vergleichen?
Aber das nur zur allgemeinen Überlegung zum Umgang mit regulären Ausdrücken. Hier ist sowieso keiner angebracht.
Live long and prosper,
Gunnar
0-9., ↩︎
Hi,
hat den horizont einer lokalen anwendung allerdings nie verlassen und ist deshalb ohne gewähr zu verwenden.
wenn ich es recht überblicke, wird das ganze (neben Gunnars Anmerkungen) auch bei Fließkommazahlen versagen.
Cheatah