Je viens de Delphi, aussi, je suis un peu dérouté par les types de variables
sous JS.
En Delphi, on passe d'une variable "entier" à sa représentation "chaîne"
avec une instruction du genre inttostr(i) où i est un nombre entier. Comment
fait-on cela en JS?
Par exemple imaginons que je veuille écrire une liste de nombre croissant
dans une textearea avec une boucle for:
for (i=0; i<20; i=i+1)
{
document.frm.txtarea.value=document.frm.txtarea.value+'\r'+ la chaîne
correspondant au nombre i
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
YD
Bonjour à tous:
Bonjour,
Je viens de Delphi, aussi, je suis un peu dérouté par les types de variables sous JS.
Le typage est plutôt faible : le moteur de script effectue les conversions à la volée selon les arguments attendus par les opérateurs ou fonctions. Sinon il est toujours possible de "forcer" la conversion de façon simple, par ex. si a est un nombre que l'on veut convertir en chaîne : a = "" + a; ou l'inverse (a num --> string) a = +a; (qui retourne NaN -- i.e. not a number -- si la valeur n'est pas convertible et non 0 !)
En Delphi, on passe d'une variable "entier" à sa représentation "chaîne" avec une instruction du genre inttostr(i) où i est un nombre entier. Comment fait-on cela en JS?
cf. plus haut ! Il existe aussi une façon plus "académique" mais qui crée un objet ex. : a = String(125); ou a = new String(125); mais dans ce cas précis le langage opère la conversion sur la valeur 125 avant d'affecter "125" à la valeur de l'objet a (String() attend un argument chaîne) ce qui revient à ce que je disais plus haut ;-)
Par exemple imaginons que je veuille écrire une liste de nombre croissant dans une textearea avec une boucle for:
for (i=0; i<20; i=i+1) { document.frm.txtarea.value=document.frm.txtarea.value+'r'+ la chaîne correspondant au nombre i }
En application de ce qui est dit avant simplement : for (i=0; i<20; i=i+1) document.frm.txtarea.value=document.frm.txtarea.value+'n'+ i;
(NB l'habitude est d'indiquer le saut de ligne plutôt par n) + est l'opérateur de concaténation et l'opérateur d'addition, mais par définition, si un de ses opérandes est une chaîne, il effectue une concaténation et renvoie une chaîne. Ainsi : "a" + 3 + 2 --> "a32" "a" + (3 + 2) --> "a5" 3 + 2 + "a" --> "5a" 3 + (2 + "a") --> "32a"
Ici j'utilise une expression régulière qui récupère les deux derniers caractères numériques de la chaîne (qui est supposée se finir par deux caractères num. d sinon elle renvoie "0la chaîne" c.à.d. la chaîne entrée puisque le motif de correspondance n'est pas trouvé).
Merci pour votre concours.
Personnellement, je préfère un merci après... J'aime bien un petit feedback.
-- Y.D.
Bonjour à tous:
Bonjour,
Je viens de Delphi, aussi, je suis un peu dérouté par les types de variables
sous JS.
Le typage est plutôt faible : le moteur de script effectue les conversions à la
volée selon les arguments attendus par les opérateurs ou fonctions. Sinon il est
toujours possible de "forcer" la conversion de façon simple, par ex. si a est un
nombre que l'on veut convertir en chaîne :
a = "" + a;
ou l'inverse (a num --> string)
a = +a; (qui retourne NaN -- i.e. not a number -- si la valeur n'est pas
convertible et non 0 !)
En Delphi, on passe d'une variable "entier" à sa représentation "chaîne"
avec une instruction du genre inttostr(i) où i est un nombre entier. Comment
fait-on cela en JS?
cf. plus haut ! Il existe aussi une façon plus "académique" mais qui crée un
objet ex. : a = String(125); ou a = new String(125); mais dans ce cas précis
le langage opère la conversion sur la valeur 125 avant d'affecter "125" à la
valeur de l'objet a (String() attend un argument chaîne) ce qui revient à ce
que je disais plus haut ;-)
Par exemple imaginons que je veuille écrire une liste de nombre croissant
dans une textearea avec une boucle for:
for (i=0; i<20; i=i+1)
{
document.frm.txtarea.value=document.frm.txtarea.value+'r'+ la chaîne
correspondant au nombre i
}
En application de ce qui est dit avant simplement :
for (i=0; i<20; i=i+1)
document.frm.txtarea.value=document.frm.txtarea.value+'n'+ i;
(NB l'habitude est d'indiquer le saut de ligne plutôt par n)
+ est l'opérateur de concaténation et l'opérateur d'addition, mais par
définition, si un de ses opérandes est une chaîne, il effectue une
concaténation et renvoie une chaîne. Ainsi :
"a" + 3 + 2 --> "a32"
"a" + (3 + 2) --> "a5"
3 + 2 + "a" --> "5a"
3 + (2 + "a") --> "32a"
Ici j'utilise une expression régulière qui récupère les deux derniers caractères
numériques de la chaîne (qui est supposée se finir par deux caractères num. d
sinon elle renvoie "0la chaîne" c.à.d. la chaîne entrée puisque le motif de
correspondance n'est pas trouvé).
Merci pour votre concours.
Personnellement, je préfère un merci après... J'aime bien un petit feedback.
Je viens de Delphi, aussi, je suis un peu dérouté par les types de variables sous JS.
Le typage est plutôt faible : le moteur de script effectue les conversions à la volée selon les arguments attendus par les opérateurs ou fonctions. Sinon il est toujours possible de "forcer" la conversion de façon simple, par ex. si a est un nombre que l'on veut convertir en chaîne : a = "" + a; ou l'inverse (a num --> string) a = +a; (qui retourne NaN -- i.e. not a number -- si la valeur n'est pas convertible et non 0 !)
En Delphi, on passe d'une variable "entier" à sa représentation "chaîne" avec une instruction du genre inttostr(i) où i est un nombre entier. Comment fait-on cela en JS?
cf. plus haut ! Il existe aussi une façon plus "académique" mais qui crée un objet ex. : a = String(125); ou a = new String(125); mais dans ce cas précis le langage opère la conversion sur la valeur 125 avant d'affecter "125" à la valeur de l'objet a (String() attend un argument chaîne) ce qui revient à ce que je disais plus haut ;-)
Par exemple imaginons que je veuille écrire une liste de nombre croissant dans une textearea avec une boucle for:
for (i=0; i<20; i=i+1) { document.frm.txtarea.value=document.frm.txtarea.value+'r'+ la chaîne correspondant au nombre i }
En application de ce qui est dit avant simplement : for (i=0; i<20; i=i+1) document.frm.txtarea.value=document.frm.txtarea.value+'n'+ i;
(NB l'habitude est d'indiquer le saut de ligne plutôt par n) + est l'opérateur de concaténation et l'opérateur d'addition, mais par définition, si un de ses opérandes est une chaîne, il effectue une concaténation et renvoie une chaîne. Ainsi : "a" + 3 + 2 --> "a32" "a" + (3 + 2) --> "a5" 3 + 2 + "a" --> "5a" 3 + (2 + "a") --> "32a"
Ici j'utilise une expression régulière qui récupère les deux derniers caractères numériques de la chaîne (qui est supposée se finir par deux caractères num. d sinon elle renvoie "0la chaîne" c.à.d. la chaîne entrée puisque le motif de correspondance n'est pas trouvé).
Merci pour votre concours.
Personnellement, je préfère un merci après... J'aime bien un petit feedback.
-- Y.D.
Gilles Chomel
Merci YD pour ce véritable cours ! qui restera une référence pour mes application JS.
Merci YD pour ce véritable cours ! qui restera une référence pour mes
application JS.