ฉันต้องการใช้ console.log () เพื่อบันทึกข้อความโดยไม่ต้องต่อท้ายบรรทัดใหม่หลังจากการเรียกแต่ละครั้งไปที่ console.log () เป็นไปได้หรือไม่
console.clear()
console.log()
ฉันต้องการใช้ console.log () เพื่อบันทึกข้อความโดยไม่ต้องต่อท้ายบรรทัดใหม่หลังจากการเรียกแต่ละครั้งไปที่ console.log () เป็นไปได้หรือไม่
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-bloat วิธีหนึ่งในการบรรลุสิ่งนี้ (ในบางเบราว์เซอร์) คือการใช้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:
รวบรวมผลลัพธ์ของคุณในอาร์เรย์จากนั้นใช้ฟังก์ชัน join กับตัวคั่นที่ต้องการ
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
คุณสามารถใช้ตัวดำเนินการกระจายเพื่อแสดงเอาต์พุตในบรรทัดเดียว คุณลักษณะใหม่ของจาวาสคริปต์ 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(' ')))