Je voudrais utiliser console.log () pour enregistrer des messages sans ajouter de nouvelle ligne après chaque appel à console.log (). Est-ce possible?
console.clear()
et, par exemple console.log()
.
Je voudrais utiliser console.log () pour enregistrer des messages sans ajouter de nouvelle ligne après chaque appel à console.log (). Est-ce possible?
console.clear()
et, par exemple console.log()
.
Réponses:
Non, ce n'est pas possible. Vous devrez conserver une chaîne et concaténer si vous voulez tout sur une seule ligne, ou placer votre sortie ailleurs (par exemple, une autre fenêtre).
question
est pas console.log
. La question concerne également la console du navigateur, pas Node.js.
apply
.
Dans NodeJS, vous pouvez utiliser process.stdout.write et vous pouvez ajouter '\ n' si vous le souhaitez.
console.log(msg)
équivaut à process.stdout.write(msg + '\n')
.
Vous pouvez mettre autant de choses arguments
que vous le souhaitez:
console.log('hi','these','words','will','be','separated','by','spaces',window,document)
Vous obtiendrez toute cette sortie sur une ligne avec les références d'objet en ligne et vous pourrez ensuite déposer leurs inspecteurs à partir de là.
Oui c'est possible (consultez la démo ci-dessous) - en implémentant votre propre console virtuelle au-dessus de la console native du navigateur, puis en la synchronisant avec la vraie.
C'est beaucoup plus facile qu'il n'y paraît:
console.clear()
avant d'écrire pour effacer tout contenu précédentconsole.log()
(ou avertir, erreur, etc.) pour remplir la console avec le contenu de votre tampon d'affichageEn fait, je fais ça depuis un certain temps maintenant. Une implémentation courte et rudimentaire de l'idée serait quelque chose du genre suivant, mais toujours capable d' animer le contenu de la console:
// =================================================
// 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);
Il a certainement ses inconvénients lors du mixage avec une interaction directe avec la console, et peut certainement paraître moche - mais il a certainement ses utilisations valables, que vous ne pourriez pas réaliser sans lui.
La réponse courte est non.
Mais
Si votre cas d'utilisation consiste à tenter de consigner des données en perpétuel changement tout en évitant le gonflement de la console, une façon d'y parvenir (dans certains navigateurs) serait de l'utiliser console.clear()
avant chaque sortie.
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);
Notez que cela interromprait probablement toute autre fonctionnalité de journalisation qui se déroulait dans votre application.
Avertissement: je classerais cela comme un hack.
Si votre seul but est d'arrêter l'impression sur plusieurs lignes, une façon est de regrouper les valeurs si vous ne voulez pas qu'elles remplissent votre console complète
PS: - Voir la console de votre navigateur pour la sortie
let arr = new Array(10).fill(0)
console.groupCollapsed('index')
arr.forEach((val,index) => {
console.log(index)
})
console.groupEnd()
Quelque chose à propos de l'idée @shennan:
collectez votre sortie dans un tableau, puis utilisez la fonction de jointure avec un séparateur préféré
function echo(name, num){
var ar= [];
for(var i =0;i<num;i++){
ar.push(name);
}
console.log(ar.join(', '));
}
echo("apple",3)
vérifiez également Array.prototype.join () pour les détails du mode
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
Vous pouvez utiliser un opérateur d'étalement pour afficher la sortie sur une seule ligne. La nouvelle fonctionnalité de javascript ES6. voir l'exemple ci-dessous
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);
}
Cela imprimera 1 à 10 tableaux en une seule ligne.
si vous voulez par exemple des éléments de tableau de journal de console sans nouvelle ligne, vous pouvez faire comme ceci
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(' ')))