Chrome JavaScript 개발자 콘솔 : 줄 바꿈없이 console.log ()를 호출 할 수 있나요?


92

console.log ()를 호출 할 때마다 새 줄 추가 하지 않고 메시지를 기록하기 위해 console.log ()를 사용하고 싶습니다 . 이것이 가능한가?


10
정답 중 하나가 맞습니까?
newenglander

@minitech의 대답이 정확하다고 생각합니다. 불가능합니다. 다른 답변은 console.log ()에 대한 이해에 다소 직교하는 경우 흥미로운 것을 제공합니다.
Dave Land

1
@DaveLand 나는 믿는다 완벽하게 가능 자신의 디스플레이 버퍼를 유지하고의 조합에 의해 실제 콘솔에이 디스플레이 버퍼를 동기화하여 console.clear()예와, console.log().
John Weisz

1
@JohnWeisz : 감사합니다. 모든 "인라인"업데이트에 대해 전체 콘솔을 지우는 것은 약 99 %의 응용 프로그램에 대한 해결책이 아닙니다. 그래도 당황해.
Dave Land

@DaveLand 예, 그것은 해킹과 더 비슷합니다. 이제 주위를 둘러 보니 이전에 제안 된 적이 있음을 깨달았습니다. 어느 쪽이든 때때로 유용 할 수 있습니다.
John Weisz

답변:


45

아니요, 불가능합니다. 모든 것을 한 줄에 넣으려면 문자열을 유지하고 연결해야합니다. 그렇지 않으면 출력을 다른 창에 넣어야합니다 (예 : 다른 창).


2
실제로 가능하지만 모든 사람이 염두에두고있는 용도로는 사용할 수 없습니다. 제 경우에는 명령 줄 터미널에서 입력을 받기 위해 질문을 인쇄하려고했습니다. 답변을 보려면이 질문에 대한 답변을 참조하십시오. stackoverflow.com/questions/26683734/…
deltaray

2
@deltaray readline questionconsole.log. 질문은 또한 Node.js가 아닌 브라우저 콘솔에 관한 것입니다.
Ry-

@minitech 스프레드 연산자를 사용하여 한 줄로 인쇄 할 수 있습니다. 예를 jsfiddle.net/imranqau5373/7m65at9L/2에서 볼
이므 란 칸에게

@imrankhan : 그게 질문이 아니에요. 스프레드 연산자는 여기에 새로운 것을 추가하지 않습니다 apply.
Ry-

40

NodeJS에서는 process.stdout.write를 사용할 수 있으며 원하는 경우 '\ n'을 추가 할 수 있습니다.

console.log(msg)와 동일합니다 process.stdout.write(msg + '\n').


15
NodeJS는 Chrome 이 아닙니다 . 이 대답은 '줄 바꿈없이 console.log 할 수 있습니까?'라는 질문과는 무관합니다. .
Alex

17

원하는만큼 많은 것을 넣을 수 있습니다 arguments.

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

객체 참조가 인라인으로 된 한 줄에 모든 출력을 얻은 다음 거기에서 검사자를 드롭 다운 할 수 있습니다.


62
이것은 질문에 어떻게 대답합니까?
JohnAllen 2014 년

16
이 답변이 유용하다고 생각합니다.

12
이것은 유용합니다. 질문에 대한 답은 아니지만 대부분의 사람들이이 질문을 찾을 때 무엇을 찾고 있는지에 대한 해결책을 제공합니다.
Sean Lynch

1
새 줄없이 인쇄하려는 이유는 다음 출력을 알 수 없기 때문입니다. 또는 점을 사용하여 "로더 바"를 상상해보십시오.
Karl Adler

여러 인수를 사용하면 첫 번째 인수 내에서만 스타일을 지정할 수 있으므로 console.log 스타일이 손상됩니다.
Qwerty

17

예, 가능합니다 (아래 데모 확인)-네이티브 브라우저 콘솔 위에 자신 만의 가상 콘솔을 구현 한 다음 실제 콘솔과 동기화하면됩니다.

이것은 생각보다 훨씬 쉽습니다.

  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);

직접적인 콘솔 상호 작용과 믹싱 할 때 확실히 단점이 있고, 확실히 못 생기게 보일 수 있습니다.하지만 확실히 유효한 용도가 있습니다.


2
이것이 가장 좋은 대답입니다. 로그 스택을 충분히 짧게 유지하는 최대 라인으로 초기화하여 엄청난 데이터 집합을 기록하지 않도록 할 수도 있습니다.
Matt Way

12

짧은 대답은 아니오입니다.

그러나

유스 케이스가 콘솔 부풀림을 피하면서 영구적으로 변경되는 데이터를 기록하려는 경우이를 달성하는 한 가지 방법 (특정 브라우저에서)은 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);

이로 인해 애플리케이션 내에서 발생하는 다른 로깅 기능이 손상 될 수 있습니다.

면책 조항 : 나는 이것을 해킹으로 분류 할 것입니다.


3
해킹이지만 영리합니다. 이미 콘솔에 기록 된 내용을 추적했다면 (예 : 가상 버퍼를 유지하여) 버퍼를 다시 빌드하고 지울 때마다 새 문자열을 추가 할 수 있습니다.
danShumway

2

여러 줄에서 인쇄를 중지하는 유일한 목적은 전체 콘솔을 채우지 않으려면 값을 그룹화하는 것입니다.

추신 :- 출력을 위해 브라우저 콘솔을 참조하십시오

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


console.groupCollapsed('index')

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

console.groupEnd()

console.group

console.groupCollapsed


1

@shennan 아이디어에 대한 것 :


1

출력을 배열로 수집 한 다음 선호하는 구분 기호와 함께 조인 함수를 사용하십시오.

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

0

스프레드 연산자를 사용하여 출력을 한 줄로 표시 할 수 있습니다. 자바 스크립트 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

예를 들어 줄 바꿈이없는 콘솔 로그 배열 요소를 원한다면 다음과 같이 할 수 있습니다.

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 

-3
// 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);
    }
}

1
A.forEach(row => console.log(row.join(' ')))
vp_arth
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.