Распечатать объект, как console.log (с большим количеством информации) в JavaScript - PullRequest
0 голосов
/ 23 марта 2019

Мне нужно отправить электронное письмо, содержащее вывод console.log объекта JS. Вот пример кода:

let array_multi = [];
array_multi["07:00"] = ["one","two","three"];
array_multi["08:00"] = ["foo","bar","foo"];
array_multi["09:00"] = ["lorem"];
console.log(array_multi);

В моей консоли результат выглядит так:

enter image description here

Есть ли какой-нибудь способ получить этот вывод в виде простого текста, или я должен написать собственную функцию синтаксического анализа?

Ответы [ 3 ]

2 голосов
/ 23 марта 2019

Если вы используете JSON.strigify , вы получите полные данные, однако есть несколько недостатков:

  • Массив получает свойства строки, функции и другие структуры данных.полностью игнорируется (поэтому сериализация ваших данных как есть не будет работать)
  • циклические ссылки не могут сериализоваться
  • Нет способа увидеть наследование от этого

Вваш случай вы можете сделать:

let array_multi = {};
array_multi["07:00"] = ["one","two","three"];
array_multi["08:00"] = ["foo","bar","foo"];
array_multi["09:00"] = ["lorem"];

// logs as object
console.log(array_multi);
console.log(typeof array_multi);

// parse and convert to string
console.log(JSON.stringify(array_multi)); 
console.log(typeof JSON.stringify(array_multi));

На NodeJS у вас есть другая опция, которая является util.format , которая будет возвращать то же содержимое, что и видимая строкав консоли NodeJS.Хотя он дает вам отличное представление о различных типах данных и взаимосвязях, он не может показать вам то же бесконечное дерево, которое может показать интерактивная консоль, поэтому он покажет вам только небольшую часть общей картины.


¹: Ваш array_multi на самом деле должен быть объектом, а не массивом, поскольку массивы должны иметь только числовые ключи.

0 голосов
/ 23 марта 2019

После долгих поисков правильный метод - написать пользовательскую функцию (у chrome один раз внутри ядра инструментов разработки)
вот решение:

let array_multi = [];
array_multi["07:00"] = ["one","two","three"];
array_multi["08:00"] = ["foo","bar","foo"];
array_multi["09:00"] = ["lorem"];


function print_js_element(elm, show_content = false){
	
	let output_res = "{\n";


	let object_keys = Object.keys(elm);

	object_keys.some(function(key,index) {

		output_res += "\t" + key + ": (" + elm[key].length + ")";

		if(show_content){
			output_res += " " + JSON.stringify(elm[key]);
		}

		output_res += "\n";
	});

	output_res += "\n}";
	return output_res;

}


console.log(print_js_element(array_multi,false));
console.log(print_js_element(array_multi,true));
0 голосов
/ 23 марта 2019

Сначала преобразуйте этот массив в объект:

let array_multi = [];
array_multi["07:00"] = ["one","two","three"];
array_multi["08:00"] = ["foo","bar","foo"];
array_multi["09:00"] = ["lorem"];

let arrObj = {...array_multi};

console.log(JSON.stringify(arrObj));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...