Я хотел бы использовать console.log () для регистрации сообщений без добавления новой строки после каждого вызова console.log (). Это возможно?
console.clear()
и, например console.log()
.
Я хотел бы использовать console.log () для регистрации сообщений без добавления новой строки после каждого вызова console.log (). Это возможно?
console.clear()
и, например console.log()
.
Ответы:
Нет, это невозможно. Вам нужно будет сохранить строку и объединить, если вы хотите, чтобы все это было в одной строке, или поместите результат в другое место (скажем, в другое окно).
question
- нет console.log
. Речь идет также о консоли браузера, а не о Node.js.
apply
.
Да, это возможно (посмотрите демонстрацию ниже) - путем реализации вашей собственной виртуальной консоли поверх собственной консоли браузера, а затем синхронизации ее с реальной.
Это намного проще, чем кажется:
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()
Кое-что об идее @shennan:
соберите свой вывод в массив, а затем используйте функцию соединения с предпочтительным разделителем
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(' ')))