Wie zeige ich den Inhalt eines JavaScript-Objekts in einem String-Format an, wie wir es bei alert
eine Variable?
Ich möchte ein Objekt auf die gleiche Weise formatieren.
Wie zeige ich den Inhalt eines JavaScript-Objekts in einem String-Format an, wie wir es bei alert
eine Variable?
Ich möchte ein Objekt auf die gleiche Weise formatieren.
Wenn Sie nach etwas suchen, das eine geschönte Zeichenkette eines beliebigen Javascript-Objekts zurückgeben kann, schauen Sie sich https://github.com/fresheneesz/beautinator . Ein Beispiel:
var result = beautinator({ "font-size": "26px","font-family": "'Open Sans', sans-serif",color: "white", overflow: "hidden",padding: "4px 4px 4px 8px",Text: { display: "block", width: "100%","text-align": "center", "padding-left": "2px","word-break": "break-word"}})
console.log(result)
Ergebnisse in:
{ "font-size": "26px",
"font-family": "'Open Sans', sans-serif",
color: "white", overflow: "hidden",
padding: "4px 4px 4px 8px",
Text: { display: "block", width: "100%",
"text-align": "center", "padding-left": "2px",
"word-break": "break-word"
}
}
Es funktioniert sogar, wenn Ihr Objekt Funktionen enthält.
Hier ist die Funktion.
function printObj(obj) {
console.log((function traverse(tab, obj) {
let str = "";
if(typeof obj !== 'object') {
return obj + ',';
}
if(Array.isArray(obj)) {
return '[' + obj.map(o=>JSON.stringify(o)).join(',') + ']' + ',';
}
str = str + '{\n';
for(var p in obj) {
str = str + tab + ' ' + p + ' : ' + traverse(tab+' ', obj[p]) +'\n';
}
str = str.slice(0,-2) + str.slice(-1);
str = str + tab + '},';
return str;
}('',obj).slice(0,-1)))};
Er kann Objekte mit Tabulatoreinzug lesbar darstellen.
Eine weitere Änderung des Codes von Pagewils... er gibt nur Strings aus und lässt die Felder für Zahlen und Boolesche Werte leer, und ich habe den Tippfehler im zweiten typeof innerhalb der Funktion, die von Megaboss erstellt wurde, korrigiert.
var print = function( o, maxLevel, level )
{
if ( typeof level == "undefined" )
{
level = 0;
}
if ( typeof maxlevel == "undefined" )
{
maxLevel = 0;
}
var str = '';
// Remove this if you don't want the pre tag, but make sure to remove
// the close pre tag on the bottom as well
if ( level == 0 )
{
str = '<pre>'; // can also be <pre>
}
var levelStr = '<br>';
for ( var x = 0; x < level; x++ )
{
levelStr += ' '; // all those spaces only work with <pre>
}
if ( maxLevel != 0 && level >= maxLevel )
{
str += levelStr + '...<br>';
return str;
}
for ( var p in o )
{
switch(typeof o[p])
{
case 'string':
case 'number': // .tostring() gets automatically applied
case 'boolean': // ditto
str += levelStr + p + ': ' + o[p] + ' <br>';
break;
case 'object': // this is where we become recursive
default:
str += levelStr + p + ': [ <br>' + print( o[p], maxLevel, level + 1 ) + levelStr + ']</br>';
break;
}
}
// Remove this if you don't want the pre tag, but make sure to remove
// the open pre tag on the top as well
if ( level == 0 )
{
str += '</pre>'; // also can be </pre>
}
return str;
};
Ich habe die Druckmethode von Pagewil verwendet, und es hat sehr gut funktioniert.
hier ist meine leicht erweiterte Version mit (schlampigen) Einrückungen und deutlichen Prop/Ob-Begrenzern:
var print = function(obj, delp, delo, ind){
delp = delp!=null ? delp : "\t"; // property delimeter
delo = delo!=null ? delo : "\n"; // object delimeter
ind = ind!=null ? ind : " "; // indent; ind+ind geometric addition not great for deep objects
var str='';
for(var prop in obj){
if(typeof obj[prop] == 'string' || typeof obj[prop] == 'number'){
var q = typeof obj[prop] == 'string' ? "" : ""; // make this "'" to quote strings
str += ind + prop + ': ' + q + obj[prop] + q + '; ' + delp;
}else{
str += ind + prop + ': {'+ delp + print(obj[prop],delp,delo,ind+ind) + ind + '}' + delo;
}
}
return str;
};
Eine einfache Möglichkeit, den Inhalt des Objekts anzuzeigen, ist die Verwendung von console.log wie unten gezeigt
console.log("Object contents are ", obj);
Bitte beachten Sie, dass ich das Objekt nicht mit "+" verkette. Wenn ich "+" verwende, erhalte ich nur die String-Darstellung des Objekts, also etwa [Object object].
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.