Bien sûr, pour convertir un objet en chaîne de caractères, vous devez soit utiliser votre propre méthode, telle que :
function objToString (obj) {
var str = '';
for (var p in obj) {
if (Object.prototype.hasOwnProperty.call(obj, p)) {
str += p + '::' + obj[p] + '\n';
}
}
return str;
}
En fait, ce qui précède ne montre que l'approche générale ; vous pouvez utiliser quelque chose comme http://phpjs.org/functions/var_export:578 ou http://phpjs.org/functions/var_dump:604
ou, si vous n'utilisez pas de méthodes (fonctions en tant que propriétés de votre objet), vous pouvez peut-être utiliser le nouveau standard (mais non implémenté dans les anciens navigateurs, bien que vous puissiez trouver un utilitaire pour les aider aussi), JSON.stringify(). Mais là encore, cela ne fonctionnera pas si l'objet utilise des fonctions ou d'autres propriétés qui ne sont pas sérialisables en JSON.
Mise à jour :
Une solution plus moderne serait :
function objToString (obj) {
let str = '';
for (const [p, val] of Object.entries(obj)) {
str += `${p}::${val}\n`;
}
return str;
}
ou :
function objToString (obj) {
return Object.entries(obj).reduce((str, [p, val]) => {
return `${str}${p}::${val}\n`;
}, '');
}
7 votes
Convertir en chaîne de caractères dans quel but ? Vous voulez dire sérialiser pour pouvoir construire l'objet plus tard à partir de la chaîne ? Ou juste pour l'affichage ?
20 votes
L'auteur est parti depuis des années, mais en lisant en tête, après des années, je suppose que le point d'entrée du problème était la console.log(obj), qui affiche l'objet avec des propriétés, alors que console.log('obj : '+obj) fonctionne de manière désorientée autrement.
2 votes
Si nous pouvions le faire, il n'y aurait pas de différence entre le type de valeur et le type de référence.
13 votes
Var o = {a:1, b:2} ; console.log('Item : ' + JSON.stringify(o))
0 votes
Peut-être que ça vaut la peine de mentionner makeArray() de jQuery
0 votes
Tout d'abord, je convertis les fonctions avec
String( func );
puis je convertis l'objet entier avecJSON.stringify(obj);
- de cette façon, vous obtenez aussi les codes des fonctions...26 votes
Si c'est pour la console, je recommanderais de faire
console.log("Item", obj);
. Pas besoin de quelque chose de compliqué.0 votes
Vous pouvez créer un
toString()
méthode : developer.mozilla.org/fr/US/docs/Web/JavaScript/Référence/1 votes
Pour la console, utilisez console.log('text : %O', obj) ; le %O dans la chaîne littérale sera remplacé par le premier paramètre supplémentaire, en supposant qu'il s'agisse d'un objet.
0 votes
Si l'objectif est seulement de l'enregistrer sur la console, il vaut mieux utiliser
console.dir(obj)
qui imprime l'objet javascript, et pas seulement une chaîne de caractères. (voir developer.mozilla.org/de/docs/Web/API/Console/dir )1 votes
Cela répond-il à votre question ? Comment puis-je obtenir l'objet complet dans la console.log() de Node.js, plutôt que '[Object]' ?
0 votes
Voir aussi stackoverflow.com/questions/11616630/ pour les objets circulaires.