J'ai une variable sur le côté serveur de nœud.js qui est un objet. Je peux vérifier cela avec Lorsque je fais une console puis je passe la variable au client avec Express: 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> console.log (typeof (valeur)); code> et i obtenez objet code>. ; code> i get p> res.Render ('cible.ejs', {Données: valeur }); code> et le fichier ejs analyse avec var cheet = ''; code> p> IT'S NOT AN OBJECT
IT'S NOT AN ARRAY
3 Réponses :
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) %>;
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 code> 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 i> 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.
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");}
Objets ont "{" et "}" const obj = { Key2: "valeur" } p>
et les tableaux ont [] p>
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 p>
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 p>
Dupliqué possible de Passez variables à JavaScript dans ExpressJs