मैं कंसोल.लॉग () के लिए प्रत्येक कॉल के बाद एक नई लाइन को जोड़ने के बिना कंसोल लॉग () संदेशों का उपयोग करना चाहता हूं । क्या यह संभव है?
console.clear()जैसे और, 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')।
आप जितनी चाहें उतनी चीजें रख सकते argumentsहैं:
console.log('hi','these','words','will','be','separated','by','spaces',window,document)
आपको वह सभी आउटपुट एक लाइन पर ऑब्जेक्ट रेफरेंस इनलाइन के साथ मिलेंगे और फिर आप अपने इंस्पेक्टरों को वहां से हटा सकते हैं।
हां, यह संभव है (नीचे दिए गए डेमो को देखें) - देशी ब्राउज़र कंसोल के शीर्ष पर अपना खुद का वर्चुअल कंसोल लागू करके, फिर इसे वास्तविक पर सिंक करके।
यह जितना लगता है उससे कहीं अधिक आसान है:
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);
प्रत्यक्ष कंसोल इंटरेक्शन के साथ मिश्रण करने पर यह निश्चित रूप से अपनी कमियां है, और निश्चित रूप से बदसूरत दिख सकता है - लेकिन इसमें निश्चित रूप से इसके वैध उपयोग हैं, जो आप इसके बिना हासिल नहीं कर सकते।
संक्षिप्त जवाब नहीं है।
परंतु
यदि आपके उपयोग-मामले में कंसोल-ब्लोट से बचने के दौरान लगातार बदलते डेटा को लॉग इन करने का प्रयास शामिल है, तो इसे प्राप्त करने का एक तरीका (कुछ ब्राउज़रों में) 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 विचार के बारे में कुछ:
अपने आउटपुट को एक सरणी में इकट्ठा करें और फिर पसंदीदा विभाजक के साथ जुड़ने वाले फ़ंक्शन का उपयोग करें
function echo(name, num){
var ar= [];
for(var i =0;i<num;i++){
ar.push(name);
}
console.log(ar.join(', '));
}
echo("apple",3)
मोड विवरण के लिए Array.prototyp.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(' ')))