Консоль разработчика Chrome JavaScript: можно ли вызвать console.log () без перевода строки? - PullRequest
78 голосов
/ 09 марта 2012

Я бы хотел использовать console.log () для регистрации сообщений без добавления новой строки после каждого вызова console.log (). Это возможно?

Ответы [ 10 ]

41 голосов
/ 09 марта 2012

Нет, это невозможно.Вам нужно будет сохранить строку и объединить, если вы хотите, чтобы все это было в одной строке, или поместить свой вывод в другое место (скажем, в другое окно).

29 голосов
/ 12 июля 2016

В NodeJS вы можете использовать process.stdout.write и можете добавить '\ n', если хотите.

console.log(msg) эквивалентно process.stdout.write(msg + '\n').

13 голосов
/ 09 марта 2012

Вы можете поместить в * 1001 столько вещей, сколько захотите:

console.log('hi','these','words','will','be','separated','by','spaces',window,document)

Вы получите все эти выходные данные в одну строку со ссылками на объекты иоттуда вы можете оставить их инспекторов.

10 голосов
/ 17 августа 2015

Короткий ответ - нет.

Но

Если ваш сценарий использования включает в себя попытку фиксировать постоянно изменяющиеся данные, избегая при этом раздутости консоли, то одним из способов достижения этого (в некоторых браузерах) будет использование 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);

Обратите внимание, что это, вероятно, нарушит любые другие функции ведения журнала, которые имели место в вашем приложении.

Отказ от ответственности: я бы классифицировал это как хак.

9 голосов
/ 24 января 2017

Да, это возможно (ознакомьтесь с демонстрацией ниже) - внедрив собственную виртуальную консоль поверх собственной консоли браузера, а затем синхронизировав ее с реальной.

Это гораздо проще, чем кажется:

  1. поддерживает буфер отображения (например, массив строк, представляющих по одной строке каждая)
  2. вызывает console.clear() перед записью для удаления любого предыдущего содержимого
  3. вызов 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);

Он, безусловно, имеет свои недостатки при микшировании с прямым взаимодействием с консолью, и может определенно выглядеть уродливо - но, безусловно, имеет свои действительные применения, которых вы не смогли бы достичь без него.

1 голос
/ 21 июля 2018

собрать выходные данные в массив и затем использовать функцию соединения с предпочтительным разделителем

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
1 голос
/ 26 августа 2016

Кое-что об идее @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();
0 голосов
/ 09 июня 2019

Если ваша единственная цель - остановить печать на нескольких строках, один из способов - сгруппировать значения, если вы не хотите, чтобы они заполняли всю вашу консоль

P.S .: - Увидимся в консоли браузера для вывода

let arr = new Array(10).fill(0)


console.groupCollapsed('index')

arr.forEach((val,index) => {
  console.log(index)
})

console.groupEnd()

console.group

console.groupCollapsed

0 голосов
/ 20 декабря 2018

Вы можете использовать оператор спреда для отображения выходных данных в одной строке.Новая функция 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 в одну строку.

0 голосов
/ 02 марта 2015
// 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...