Tableau de cha=c3=aenes de caract=c3=a8res

Le
Gloops
Bonjour tout le monde,

Quand j'exécute ça, je vois "False", alors que je m'attends à voir "True".

Où est-ce que je me trompe ?


var A = [".jpg", ".png", ".gif"];
if(A.isarray)
{
WScript.Echo("True");
}
else
{
WScript.Echo("False");
}

--
Besoin d'un autre système, pas d'un autre gouvernement.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
db
Le #26448664
Le 21/10/2017 à 23:19, Gloops a écrit :
Bonjour tout le monde,
Quand j'exécute ça, je vois "False", alors que je m'attends à voir "True".
Où est-ce que je me trompe ?
 var A = [".jpg", ".png", ".gif"];
 if(A.isarray)
 {
    WScript.Echo("True");
 }
 else
 {
    WScript.Echo("False");
 }


Peut-être :
if (Array.isArray(A))...
db
Eric Demeester
Le #26448696
Bonjour,
Gloops (Sat, 21 Oct 2017 23:19:48 +0200 - fr.comp.lang.javascript) :
Quand j'exécute ça, je vois "False", alors que je m'attends à voir "True".

Je pense que db a raison, il faut utiliser la méthode isArray() :
var A = [".jpg", ".png", ".gif"];
if(A.isarray)

if(Array.isArray(A))
{
WScript.Echo("True");
}
else
{
WScript.Echo("False");
}

doit renvoyer « True ».
Voir : https://www.w3schools.com/jsref/jsref_isarray.asp
Gloops
Le #26448718
Le 21/10/2017 à 23:32, db a écrit :
Le 21/10/2017 à 23:19, Gloops a écrit :
Bonjour tout le monde,
Quand j'exécute ça, je vois "False", alors que je m'attends à voir
"True".
Où est-ce que je me trompe ?
  var A = [".jpg", ".png", ".gif"];
  if(A.isarray)
  {
     WScript.Echo("True");
  }
  else
  {
     WScript.Echo("False");
  }

Peut-être :
if (Array.isArray(A))...
db

Merci pour la proposition, mais il me dit "Cet objet ne gère pas cette
propriété ou cette méthode.
D'ailleurs, pareil si je lui dis
var A = Array.of(".jpg", ".png", ".gif");
et avant j'ai essayé avec Array.from.
Il n'y a pas de déclaration particulière à faire, pour utiliser Array ?
--
Besoin d'un autre système, pas d'un autre gouvernement.
Gloops
Le #26448717
Le 22/10/2017 à 11:24, Eric Demeester a écrit :
Bonjour,
Gloops (Sat, 21 Oct 2017 23:19:48 +0200 - fr.comp.lang.javascript) :
Quand j'exécute ça, je vois "False", alors que je m'attends à voir "True".

Je pense que db a raison, il faut utiliser la méthode isArray() :
var A = [".jpg", ".png", ".gif"];
if(A.isarray)

if(Array.isArray(A))
{
WScript.Echo("True");
}
else
{
WScript.Echo("False");
}

doit renvoyer « True ».
Voir : https://www.w3schools.com/jsref/jsref_isarray.asp


Merci,
Est-ce qu'il y a une déclaration particulière à faire ?
C'est un script destiné à être exécuté par CScript.exe sous Windows, or
l'exemple donné par w3schools parle d'une page web.
Ou à la limite j'écris une application hta, ça serait un moyen de
contournement.
--
Besoin d'un autre système, pas d'un autre gouvernement.
Olivier Miakinen
Le #26448739
Bonjour,
Le 22/10/2017 18:10, Gloops a écrit :
Peut-être :
if (Array.isArray(A))...

Merci pour la proposition, mais il me dit "Cet objet ne gère pas cette
propriété ou cette méthode.

Une recherche sur isArray sur le web retourne plein de pages disant
que cette fonction n'a pas toujours existé, et expliquant comment
la définir si elle n'existe pas par défaut :
if(!Array.isArray) {
Array.isArray = function(arg) {
return Object.prototype.toString.call(arg) === '[object Array]';
};
}
--
Olivier Miakinen
Gloops
Le #26448759
Le 22/10/2017 à 22:25, Olivier Miakinen a écrit :
Bonjour,
Le 22/10/2017 18:10, Gloops a écrit :
Peut-être :
if (Array.isArray(A))...

Merci pour la proposition, mais il me dit "Cet objet ne gère pas cette
propriété ou cette méthode.

Une recherche sur isArray sur le web retourne plein de pages disant
que cette fonction n'a pas toujours existé, et expliquant comment
la définir si elle n'existe pas par défaut :
if(!Array.isArray) {
Array.isArray = function(arg) {
return Object.prototype.toString.call(arg) === '[object Array]';
};
}


OK merci. Apparemment j'étais trop concentré pour voir ça, alors j'ai
fait mon test sur chacune des valeurs plutôt que sur l'appartenance au
tableau.
Maintenant que j'ai remis la machine d'aplomb je pense que je devrais
avoir un moment cet après-midi pour tester ça.
--
Besoin d'un autre système, pas d'un autre gouvernement.
Elhwen Dico
Le #26448779
Le 21/10/2017 à 23:19, Gloops a écrit :
Bonjour tout le monde,
Quand j'exécute ça, je vois "False", alors que je m'attends à voir "True".
Où est-ce que je me trompe ?
 var A = [".jpg", ".png", ".gif"];
 if(A.isarray)
 {
    WScript.Echo("True");
 }
 else
 {
    WScript.Echo("False");
 }


En fait, il faut utiliser Array.isArray(A)
D'abord, il faut faire attention aux majuscules/minuscules. Elles
sont significatives.
Ensuite,
A.isarray accède à un membre de l'objet A. Ce membre n'existe pas et la
valeur retournée est undefined qui se convertit en false.
Il faudrait plutôt écrire
const exts = ['.jpg', '.png', 'gif'];
if (Array.isArray && typeof Array.isArray === 'function') {
console.log('Array.isArray(exts) = ' + Array.isArray(exts));
}
executé sur node 6.11.3 ->
Array.isArray(exts) = true
Gloops
Le #26448828
Le 22/10/2017 à 22:25, Olivier Miakinen a écrit :
Bonjour,
Le 22/10/2017 18:10, Gloops a écrit :
Peut-être :
if (Array.isArray(A))...

Merci pour la proposition, mais il me dit "Cet objet ne gère pas cette
propriété ou cette méthode.

Une recherche sur isArray sur le web retourne plein de pages disant
que cette fonction n'a pas toujours existé, et expliquant comment
la définir si elle n'existe pas par défaut :
if(!Array.isArray) {
Array.isArray = function(arg) {
return Object.prototype.toString.call(arg) === '[object Array]';
};
}


Effectivement c'est tout bon, et ce qui m'a la plus servi pour détecter
si une chaîne appartient à la liste c'est ça :
if(!Array.indexOf){
Array.indexOf = function(arg1, arg2) {
// arg1 : tableau ; arg2 : chaîne à y chercher
for(var i = 0; i<arg1.length; i++)
{
if(arg1[i] == arg2)return i;
}
return -1;
}
}
--
Besoin d'un autre système, pas d'un autre gouvernement.
Gloops
Le #26448841
Le 23/10/2017 à 15:02, Elhwen Dico a écrit :
Le 21/10/2017 à 23:19, Gloops a écrit :
Bonjour tout le monde,
Quand j'exécute ça, je vois "False", alors que je m'attends à voir
"True".
Où est-ce que je me trompe ?
  var A = [".jpg", ".png", ".gif"];
  if(A.isarray)
  {
     WScript.Echo("True");
  }
  else
  {
     WScript.Echo("False");
  }

  En fait, il faut utiliser Array.isArray(A)
  D'abord, il faut faire attention aux majuscules/minuscules. Elles
sont significatives.
  Ensuite,
A.isarray accède à un membre de l'objet A. Ce membre n'existe pas et la
valeur retournée est undefined qui se convertit en false.
  Il faudrait plutôt écrire
const exts = ['.jpg', '.png', 'gif'];
if (Array.isArray && typeof Array.isArray === 'function') {
    console.log('Array.isArray(exts) = ' + Array.isArray(exts));
}
executé sur node 6.11.3 ->
Array.isArray(exts) = true

Bonjour, et merci pour la réponse.
Je crois que nous avons un problème de diffusion des newsgroups, le
problème n'est hélas pas neuf.
Olivier Miakinen (Message-ID: signalé le problème des références pas déclarées partout, et de la
nécessité de redonner le code d'une fonction quand elle n'est pas connue.
En réponse j'ai indiqué que j'ai pu exploiter ça, notamment sur la
fonction indexOf (appliquée ici non pas à une chaîne de caractères mais
à un tableau, bien entendu).
https://groups.google.com/forum/#!search/fr.comp.lang.javascript$20tableau$20de$20cha%C3%AEnes$20de$20caract%C3%A8res/fr.comp.lang.javascript/wy1BePdLKxY/BI6Lsu1VBgAJ
--
Besoin d'un autre système, pas d'un autre gouvernement.
Publicité
Poster une réponse
Anonyme