Console.log () ' a yapılan her çağrıdan sonra yeni bir satır eklemeden mesajları günlüğe kaydetmek için console.log () kullanmak istiyorum . Mümkün mü?
console.clear()
örn ve console.log()
.
Console.log () ' a yapılan her çağrıdan sonra yeni bir satır eklemeden mesajları günlüğe kaydetmek için console.log () kullanmak istiyorum . Mümkün mü?
console.clear()
örn ve console.log()
.
Yanıtlar:
Hayır, mümkün değil. Bir dizeyi tutmanız ve hepsini bir satırda isterseniz birleştirmeniz veya çıktınızı başka bir yere (örneğin, başka bir pencere) koymanız gerekir.
question
değil console.log
. Soru ayrıca Node.js ile değil, tarayıcı konsolu ile ilgilidir.
apply
.
NodeJS'de process.stdout.write'ı kullanabilir ve isterseniz '\ n' ekleyebilirsiniz.
console.log(msg)
eşdeğerdir process.stdout.write(msg + '\n')
.
Evet, mümkündür (aşağıdaki demoya bakın) - kendi sanal konsolunuzu yerel tarayıcı konsolunun üstüne uygulayıp ardından gerçek konsolla senkronize ederek.
Bu göründüğünden çok daha kolay:
console.clear()
önceki içeriği silmek için yazmadan önce arayınconsole.log()
konsolu görüntü arabelleğinizdeki içerikle doldurmak için çağrı (veya uyarı, hata vb.)Aslında bunu bir süredir yapıyorum. Fikrin kısa, ilkel bir uygulaması aşağıdaki satırlarda bir şey olabilir, ancak yine de konsol içeriğini canlandırabilir:
// =================================================
// 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);
Doğrudan konsol etkileşimi ile karıştırırken sakıncaları vardır ve kesinlikle çirkin görünebilir - ancak kesinlikle onsuz elde edemeyeceğiniz geçerli kullanımları vardır.
İstediğiniz kadar çok şey koyabilirsiniz arguments
:
console.log('hi','these','words','will','be','separated','by','spaces',window,document)
Nesne referansları satır içi olarak tüm bu çıktıları tek bir satırda alacaksınız ve ardından denetçilerini oradan bırakabilirsiniz.
Kısa cevap hayır.
Fakat
Kullanım durumunuz konsol bloatından kaçınırken sürekli olarak değişen verileri günlüğe kaydetmeyi içeriyorsa, bunu başarmanın bir yolu (belirli tarayıcılarda) console.clear()
her çıktıdan önce kullanmak olacaktır .
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);
Bunun muhtemelen uygulamanızda gerçekleşen diğer tüm günlük işlevlerini bozacağını unutmayın.
Feragatname: Bunu bir hack olarak sınıflandırırım.
Birçok satırda yazdırmayı durdurmak için tek amacınız varsa, bunun bir yolu, tüm konsolunuzu doldurmalarını istemiyorsanız değerleri gruplamaktır.
Not: - Çıktı için görüşmek üzere tarayıcı konsolu
let arr = new Array(10).fill(0)
console.groupCollapsed('index')
arr.forEach((val,index) => {
console.log(index)
})
console.groupEnd()
@Shennan fikri hakkında bir şey:
çıktınızı bir dizide toplayın ve ardından birleştirme işlevini tercih edilen bir ayırıcıyla kullanın
function echo(name, num){
var ar= [];
for(var i =0;i<num;i++){
ar.push(name);
}
console.log(ar.join(', '));
}
echo("apple",3)
mod ayrıntıları için ayrıca Array.prototype.join () 'e bakın
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
Çıktıyı tek satırda görüntülemek için bir yayılma operatörü kullanabilirsiniz. JavaScript ES6'nın yeni özelliği. aşağıdaki örneğe bakın
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);
}
Bu, tek satırda 1 ila 10 tablo yazdıracaktır.
Örneğin, satırsonu olmadan konsol günlüğü dizisi öğeleri istiyorsanız, bunu yapabilirsiniz
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(' ')))