javascript - recorrer - object.values typescript
¿Imprimir contenido de objeto JavaScript? (15)
Además de usar un depurador, también puede acceder a todos los elementos de un objeto utilizando un bucle foreach
. La siguiente función printObject
debería alert()
su objeto mostrando todas las propiedades y valores respectivos.
function printObject(o) {
var out = '''';
for (var p in o) {
out += p + '': '' + o[p] + ''/n'';
}
alert(out);
}
// now test it:
var myObject = {''something'': 1, ''other thing'': 2};
printObject(myObject);
Es preferible utilizar una herramienta de inspección DOM porque le permite cavar bajo las propiedades que son objetos en sí. Firefox tiene FireBug, pero todos los demás navegadores principales (IE, Chrome, Safari) también tienen herramientas de depuración integradas que debe comprobar.
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo puedo mostrar un objeto de JavaScript? 35 respuestas
Típicamente si solo usamos alert(object);
se mostrará como [object Object]
. ¿Cómo imprimir todos los parámetros de contenido de un objeto en JavaScript?
Deberías considerar usar FireBug para la depuración de JavaScript. Le permitirá inspeccionar interactivamente todas sus variables, e incluso pasar por las funciones.
Esto te dará una salida muy agradable con el objeto JSON con sangría:
alert(JSON.stringify(YOUR_OBJECT_HERE, null, 4));
El segundo argumento altera el contenido de la cadena antes de devolverla. El tercer argumento especifica cuántos espacios se deben usar como espacios en blanco para facilitar la lectura.
Función simple para alertar el contenido de un objeto o una matriz.
Llame a esta función con una matriz o cadena o un objeto que alerta los contenidos.
Función
function print_r(printthis, returnoutput) {
var output = '''';
if($.isArray(printthis) || typeof(printthis) == ''object'') {
for(var i in printthis) {
output += i + '' : '' + print_r(printthis[i], true) + ''/n'';
}
}else {
output += printthis;
}
if(returnoutput && returnoutput == true) {
return output;
}else {
alert(output);
}
}
Uso
var data = [1, 2, 3, 4];
print_r(data);
Imprimir el contenido del objeto que puede utilizar
console.log(obj_str);
Puedes ver el resultado en la consola como abajo.
Object {description: "test"}
Para la consola abierta, presione F12 en el navegador Chrome, encontrará la pestaña de la consola en el modo de depuración.
Internet Explorer 8 tiene herramientas de desarrollador que son similares a FireBug para Firefox. Opera tiene Opera DragonFly, y Google Chrome también tiene algo llamado Developer Tools (Shift + Ctrl + J).
Aquí hay una respuesta más detallada para depurar JavaScript en IE6-8: Usar las ''Herramientas de desarrollo'' de IE8 para depurar versiones anteriores de IE
Javascript para todos!
String.prototype.repeat = function(num) {
if (num < 0) {
return '''';
} else {
return new Array(num + 1).join(this);
}
};
function is_defined(x) {
return typeof x !== ''undefined'';
}
function is_object(x) {
return Object.prototype.toString.call(x) === "[object Object]";
}
function is_array(x) {
return Object.prototype.toString.call(x) === "[object Array]";
}
/**
* Main.
*/
function xlog(v, label) {
var tab = 0;
var rt = function() {
return '' ''.repeat(tab);
};
// Log Fn
var lg = function(x) {
// Limit
if (tab > 10) return ''[...]'';
var r = '''';
if (!is_defined(x)) {
r = ''[VAR: UNDEFINED]'';
} else if (x === '''') {
r = ''[VAR: EMPTY STRING]'';
} else if (is_array(x)) {
r = ''[/n'';
tab++;
for (var k in x) {
r += rt() + k + '' : '' + lg(x[k]) + '',/n'';
}
tab--;
r += rt() + '']'';
} else if (is_object(x)) {
r = ''{/n'';
tab++;
for (var k in x) {
r += rt() + k + '' : '' + lg(x[k]) + '',/n'';
}
tab--;
r += rt() + ''}'';
} else {
r = x;
}
return r;
};
// Space
document.write(''/n/n'');
// Log
document.write(''< '' + (is_defined(label) ? (label + '' '') : '''') + Object.prototype.toString.call(v) + '' >/n'' + lg(v));
};
// Demo //
var o = {
''aaa'' : 123,
''bbb'' : ''zzzz'',
''o'' : {
''obj1'' : ''val1'',
''obj2'' : ''val2'',
''obj3'' : [1, 3, 5, 6],
''obj4'' : {
''a'' : ''aaaa'',
''b'' : null
}
},
''a'' : [ ''asd'', 123, false, true ],
''func'' : function() {
alert(''test'');
},
''fff'' : false,
''t'' : true,
''nnn'' : null
};
xlog(o, ''Object''); // With label
xlog(o); // Without label
xlog([''asd'', ''bbb'', 123, true], ''ARRAY Title!'');
var no_definido;
xlog(no_definido, ''Undefined!'');
xlog(true);
xlog('''', ''Empty String'');
Me enfrenté a un problema similar, la razón fue que utilizo ajax para obtener datos. En este caso había realizado dos llamadas ajax asíncronas. En uno acabo de devolver el mensaje de cadena y mostrar en alerta. En la segunda llamada ajax, busco el arraylist en formato json y lo decodifico en js. Así que mi segunda solicitud se utiliza para procesar primero y estaba recibiendo alerta de objeto.
Así que sólo compruebe. 1. alerta debe contener cadena. 2. Si obtienes arrayList o cualquier otro Objeto, descifra.
¡Todo lo mejor!
Podrías util.inspect(object) Node para imprimir la estructura del objeto.
Es especialmente útil cuando su objeto tiene dependencias circulares, por ejemplo,
$ node
var obj = {
"name" : "John",
"surname" : "Doe"
}
obj.self_ref = obj;
util = require("util");
var obj_str = util.inspect(obj);
console.log(obj_str);
// prints { name: ''John'', surname: ''Doe'', self_ref: [Circular] }
En ese caso, JSON.stringify lanza la excepción: TypeError: Converting circular structure to JSON
Puede dar a sus objetos sus propios métodos de toString en sus prototipos.
Puede usar json.js desde http://www.json.org/js.html para cambiar los datos de json a datos de cadena.
Si está utilizando Firefox, la alert(object.toSource())
debería ser suficiente para propósitos de depuración simples.
Si solo desea tener una representación de cadena de un objeto, puede usar la función JSON.stringify
, utilizando una biblioteca JSON .
También puede usar el método Object.inspect () de Prototype, que "Devuelve la representación de cadena orientada a la depuración del objeto".
Utilice dir (objeto). O siempre puedes descargar FireBug (realmente útil).