Sur mon serveur node.js, j'ai le code suivant:
tags: [object Object],[object Object]
Je m'attendais à ce que la console dise ceci:
tags: [{"value":"tag1"},{"value":"tag2"}]
Mais à la place obtenu ceci:
var tags = [{"value":"tag1"},{"value":"tag2"}];
console.log("tags: " + tags);
Pourquoi cela se produit-il? Cela pose des problèmes dans mon code car j'essaie d'accéder aux valeurs mais je ne peux pas.
6 Réponses :
Lorsque vous effectuez "tags:" + tags , les toString méthode des objets est appelée afin de faire l'opération.
Changer
console.log("tags: ", tags);
Vous pouvez également utiliser JSON pour consigner correctement les objets si vous souhaitez concaténer les chaînes.
var tags = [{
"value": "tag1"
}, {
"value": "tag2"
}];
console.log("tags: " + JSON.stringify(tags))
Pourquoi cela se produit-il?
Cela se produit parce que lorsque vous essayez de concaténer une variable avec une chaîne en utilisant l'opérateur + , javascript convertit la valeur de la variable en chaîne.
Vous avez deux options:
1: Utilisez la virgule , au lieu de concaténer les chaînes ensemble, pour éviter que toString () ne soit appelé et crée [Object Object] :
var tags = [{"value": "tag1"}, {"value": "tag2"}];
console.log("Tags: ", JSON.stringify(tags));
2: Utilisez JSON.stringify () sur l'objet pour le convertir en une chaîne lisible:
var tags = [{"value": "tag1"}, {"value": "tag2"}];
console.log("Tags: ", tags);
Lorsque vous créez une chaîne concaténée à l'aide de l'opérateur + , la méthode .toString () est appelée sur les parties non-chaîne pour les convertir en chaînes lisibles - et cette méthode renvoie [object Object] pour les objets simples.
Si vous voulez voir le contenu réel du tableau, utilisez:
console.log ("tags:", tags); (lorsqu'il est utilisé dans la console du navigateur, permet un journal "interactif": vous pourrez cliquer sur le tableau et le déplier son contenu); console.log ("tags:" + JSON.stringify (tags)); si vous voulez juste voir le contenu du tableau imprimé (utilisez JSON.stringify (tags , null, 2) pour une jolie impression avec un retrait de 2 espaces). '+' stringifie l'objet, donc résultats [object Object], Vous devez utiliser JSON.stringify () pour convertir votre objet en chaîne JSON avant d'utiliser la console avec '+', sinon utiliser la console avec ",".
l'utilisation de l'opérateur
+pour concaténer un objet avec une chaîne revient à appeler'string' + obj.toString (), qui({}). toString ()est[objet objet]. Js tente de convertir le deuxième élément de l'opération en type du premier élément, une chaîne, d'où la raison pour laquelle vous ne voyez pas le contenu du tableau mais plutôt[object Object].Si vous voulez le consigner, faites ceci - console.log ({tags: tags}) plutôt que console.log ("tags:" + tags). dans ce cas, il essaie d'ajouter une chaîne à l'objet, vous donnant ainsi un résultat inattendu.