0
votes

Objet.js objet sur le serveur n'est pas un objet sur le client

J'ai une variable sur le côté serveur de nœud.js qui est un objet. Je peux vérifier cela avec console.log (typeof (valeur)); code> et i obtenez objet code>.

Lorsque je fais une console ; code> i get p> xxx pré>

puis je passe la variable au client avec Express: res.Render ('cible.ejs', {Données: valeur }); code> et le fichier ejs analyse avec var cheet = ''; code> p>

Je veux savoir s'il s'agit d'un objet ou de un tableau, afin de déterminer comment le gérer sur le côté du client. P>

J'ai écrit un petit script pour le tester: P>

IT'S NOT AN OBJECT
IT'S NOT AN ARRAY


1 commentaires

3 Réponses :


2
votes

La valeur est une chaîne simple après avoir été analysée avec la syntaxe EJS.

EJS DOC Spécifie comment définir une valeur tel quel. p>

sortira la valeur non évaluée dans le modèle P> blockQuote>

Essayez ci-dessous: P>

var value = <%- JSON.stringify(data) %>;


6 commentaires

Je reçois cette erreur dans la console: "SyntaxExError non capturé: jeton inattendu et json en position 1 à json.parse ()"


@ user1584421 Vous devez également json.stringify la valeur sur le serveur avant de l'envoyer au client.


Merci! Mais maintenant, j'ai des deux "c'est un objet" et "c'est un tableau".


@ user1584421 oui c'est. le tableau JavaScript est un objet et un tableau en même temps :)


Merci! Cela signifie-t-il que je peux itérer, comme ce serait un tableau normal? Et puis-je exécuter des méthodes de tableau comme une matry.length?


@ user1584421 sûr. C'est un tableau afin que vous puissiez utiliser des méthodes de matrice.



2
votes

de MDN :

Les noms de propriété doivent être des chaînes à double cotation; les virgules traînantes sont interdites. p> blockquote>

Cela signifie que vous devez remplacer des caractères non valides avant analyse : p>

p>

var origvalue = "[ 'bla_bla_1','bla_bla_2','bla_bla_3', ]";
var value =  JSON.parse(origvalue.replace(/'/g, '"').replace(/,[^,]*\]/, '\]'));
if (typeof(value) === 'object') {console.log("IT'S AN OBJECT");}
else {console.log("IT'S NOT AN OBJECT");}
if ( Array.isArray(value) ) {console.log("IT'S AN ARRAY");}
else {console.log("IT'S NOT AN ARRAY");}


0 commentaires

2
votes

Objets ont "{" et "}" const obj = { Key2: "valeur" }

et les tableaux ont []

Les objets ont une valeur clé, les tableaux ne le font pas, mais si vous êtes une personne orthodoxe, vous saurez qu'en le jour et la matrice est un objet

Ne me faites pas confiance à cela, mais je pense que Typeof est utilisé sur des valeurs primitives et que nous connaissons les matrices, un objet ne sont pas, il est préférable d'utiliser l'instance de


0 commentaires