Я хотел бы использовать console.log () для регистрации сообщений без добавления новой строки после каждого вызова console.log (). Это возможно?
javascript
google-chrome
console
logging
МитчеллСалат
источник
источник
console.clear()
и, напримерconsole.log()
.Ответы:
Нет, это невозможно. Вам нужно будет сохранить строку и объединить, если вы хотите, чтобы все это было в одной строке, или поместите результат в другое место (скажем, в другое окно).
источник
question
- нетconsole.log
. Речь идет также о консоли браузера, а не о Node.js.apply
.В NodeJS вы можете использовать process.stdout.write, и вы можете добавить '\ n', если хотите.
console.log(msg)
эквивалентноprocess.stdout.write(msg + '\n')
.источник
Да, это возможно (посмотрите демонстрацию ниже) - путем реализации вашей собственной виртуальной консоли поверх собственной консоли браузера, а затем синхронизации ее с реальной.
Это намного проще, чем кажется:
console.clear()
перед записью, чтобы стереть любое предыдущее содержимоеconsole.log()
(или предупреждение, ошибка и т. д.) для заполнения консоли содержимым из буфера дисплеяСобственно, я занимаюсь этим уже некоторое время. Краткая, элементарная реализация идеи могла бы быть чем-то вроде следующих строк, но все же способной анимировать содержимое консоли:
// ================================================= // Rudimentary implementation of a virtual console. // ================================================= var virtualConsole = { lines: [], currentLine: 0, log: function (msg, appendToCurrentLine) { if (!appendToCurrentLine) virtualConsole.currentLine++; if (appendToCurrentLine && virtualConsole.lines[virtualConsole.currentLine]) { virtualConsole.lines[virtualConsole.currentLine] += msg; } else { virtualConsole.lines[virtualConsole.currentLine] = msg; } console.clear(); virtualConsole.lines.forEach(function (line) { console.log(line); }); }, clear: function () { console.clear(); virtualConsole.currentLine = 0; } } // ================================================= // Little demo to demonstrate how it looks. // ================================================= // Write an initial console entry. virtualConsole.log("Loading"); // Append to last line a few times. var loadIndicatorInterval = setInterval(function () { virtualConsole.log(".", true); // <- Append. }, 500); // Write a new line. setTimeout(function () { clearInterval(loadIndicatorInterval); virtualConsole.log("Finished."); // <- New line. }, 8000);
У него наверняка есть свои недостатки при смешивании с прямым взаимодействием с консолью, и он определенно может выглядеть некрасиво, но он определенно имеет свои правильные применения, которых вы не смогли бы достичь без него.
источник
Вы можете положить туда столько вещей,
arguments
сколько захотите:console.log('hi','these','words','will','be','separated','by','spaces',window,document)
Вы получите весь этот вывод в одной строке со встроенными ссылками на объекты, и затем вы сможете раскрыть их инспекторы оттуда.
источник
Короткий ответ: нет.
Но
Если ваш вариант использования включает попытку регистрировать постоянно меняющиеся данные, избегая при этом раздувания консоли, то один из способов добиться этого (в некоторых браузерах) - использовать
console.clear()
перед каждым выводом.function writeSingleLine (msg) { console.clear(); console.log(msg); } writeSingleLine('this'); setTimeout( function () { writeSingleLine('is'); }, 1000); setTimeout( function () { writeSingleLine('a'); }, 2000); setTimeout( function () { writeSingleLine('hack'); }, 3000);
Обратите внимание, что это, вероятно, нарушит любую другую функцию ведения журнала, которая выполнялась в вашем приложении.
Отказ от ответственности: я бы назвал это взломом.
источник
Если ваша единственная цель - остановить печать на многих строках, один из способов - сгруппировать значения, если вы не хотите, чтобы они заполняли всю консоль
PS: - Увидимся в консоли браузера для вывода
let arr = new Array(10).fill(0) console.groupCollapsed('index') arr.forEach((val,index) => { console.log(index) }) console.groupEnd()
console.group
console.groupCollapsed
источник
Кое-что об идее @shennan:
Показать фрагмент кода
function init(poolSize) { var pool = []; console._log = console.log; console.log = function log() { pool.push(arguments); while (pool.length > poolSize) pool.shift(); draw(); } console.toLast = function toLast() { while (pool.length > poolSize) pool.shift(); var last = pool.pop() || []; for (var a = 0; a < arguments.length; a++) { last[last.length++] = arguments[a]; } pool.push(last); draw(); } function draw() { console.clear(); for(var i = 0; i < pool.length; i++) console._log.apply(console, pool[i]); } } function restore() { console.log = console._log; delete console._log; delete console.toLast; } init(3); console.log(1); console.log(2); console.log(3); console.log(4); // 1 will disappeared here console.toLast(5); // 5 will go to row with 4 restore();
источник
соберите свой вывод в массив, а затем используйте функцию соединения с предпочтительным разделителем
function echo(name, num){ var ar= []; for(var i =0;i<num;i++){ ar.push(name); } console.log(ar.join(', ')); } echo("apple",3)
проверьте также Array.prototype.join () для подробностей режима
var elements = ['Fire', 'Wind', 'Rain']; console.log(elements.join()); // expected output: Fire,Wind,Rain console.log(elements.join('')); // expected output: FireWindRain console.log(elements.join('-')); // expected output: Fire-Wind-Rain
источник
Вы можете использовать оператор распространения для вывода вывода в одну строку. Новая функция javascript ES6. см. ниже пример
for(let i = 1; i<=10; i++){ let arrData = []; for(let j = 1; j<= 10; j++){ arrData.push(j+"X"+i+"="+(j*i)); } console.log(...arrData); }
Это напечатает от 1 до 10 таблиц в одной строке.
источник
если вы хотите, например, элементы массива журнала консоли без новой строки, вы можете сделать это
const arr = [1,2,3,4,5]; Array.prototype.log = (sep='') => { let res = ''; for(let j=0; j<this.lengthl j++){ res += this[j]; res += sep; } console.log(res); } // console loging arr.log(sep=' '); // result is: 1 2 3 4 5
источник
// Source code for printing 2d array window.onload = function () { var A = [[1, 2], [3, 4]]; Print(A); } function Print(A) { var rows = A.length; var cols = A[0].length; var line = ""; for (var r = 0; r < rows; r++) { line = ""; for (var c = 0; c < cols; c++) { line += A[r][c] + " "; } console.log(line); } }
источник
A.forEach(row => console.log(row.join(' ')))