J'aimerais utiliser console.log () pour consigner des messages sans ajouter une nouvelle ligne après chaque appel à console.log (). Est-ce possible?
Non, ce n'est pas possible Vous devrez garder une chaîne et concaténer si vous voulez tout dans une ligne, ou mettez votre sortie ailleurs (par exemple, une autre fenêtre).
Dans NodeJS, vous pouvez utiliser process.stdout.write et vous pouvez ajouter '\ n' si vous le souhaitez.
console.log(msg)
est équivalent à process.stdout.write(msg + '\n')
.
Vous pouvez mettre autant de choses dans arguments
que vous le souhaitez:
console.log('hi','these','words','will','be','separated','by','spaces',window,document)
Vous obtiendrez toutes ces sorties sur une seule ligne avec les références d'objet en ligne et vous pourrez ensuite déposer leurs inspecteurs à partir de là.
La réponse courte est non.
Mais
Si votre cas d'utilisation implique de tenter de consigner des données constamment changeantes tout en évitant le gonflement de la console, un moyen d'y parvenir (dans certains navigateurs) serait d'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 casserait probablement toute autre fonctionnalité de journalisation en cours dans votre application.
Disclaimer: Je classerais cela comme un hack.
Oui, c'est possible (consultez la démo ci-dessous) - en implémentant votre propre console virtuelle par-dessus la console du navigateur natif, puis en la synchronisant sur la console réelle.
C'est beaucoup plus facile que ça en a l'air:
console.clear()
avant d'écrire pour effacer le contenu précédentconsole.log()
(ou warn, error, etc) pour remplir la console avec le contenu de votre tampon d'affichageEn fait, je le fais depuis un certain temps maintenant. Une mise en œuvre brève et rudimentaire de l’idée ressemblerait à quelque chose, mais elle serait tout de même capable de 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 certes des inconvénients lors du mixage avec une interaction directe avec la console, et peut certainement paraître moche - mais il a certainement des utilisations valables, que vous ne pourriez pas réaliser sans elle.
collectez votre sortie dans un tableau, puis utilisez la fonction join 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
Si votre seul objectif est d’arrêter d’imprimer sur plusieurs lignes, vous pouvez, par exemple, regrouper les valeurs si vous ne souhaitez pas qu’elles remplissent votre console complète.
P.S.:- Consultez 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()
Vous pouvez utiliser un opérateur d'étalement pour afficher la sortie sur une seule ligne. La nouvelle fonctionnalité de javascript ES6. voir ci-dessous exemple
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 tableau en une seule ligne.
Quelque chose à propos de @shennan idea:
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();