কনসোল.লগ () এ প্রতিটি কল করার পরে কোনও নতুন লাইন যুক্ত না করে বার্তা লগ করতে আমি কনসোল.লগ () ব্যবহার করতে চাই । এটা কি সম্ভব?
console.clear()
যেমন এবং console.log()
।
কনসোল.লগ () এ প্রতিটি কল করার পরে কোনও নতুন লাইন যুক্ত না করে বার্তা লগ করতে আমি কনসোল.লগ () ব্যবহার করতে চাই । এটা কি সম্ভব?
console.clear()
যেমন এবং console.log()
।
উত্তর:
না, এটা সম্ভব নয়। আপনি যদি সমস্ত কিছু এক লাইনে চান তবে আপনাকে একটি স্ট্রিং রাখতে এবং যুক্ত থাকতে হবে, বা আপনার আউটপুট অন্য কোথাও রেখেছেন (বলুন, অন্য উইন্ডো)।
question
নয় console.log
। প্রশ্নটি নোড.জেএস নয়, ব্রাউজার কনসোল সম্পর্কেও is
apply
।
নোডজেজে আপনি প্রক্রিয়া.স্টডআউট.উইরাইট ব্যবহার করতে পারেন এবং আপনি চাইলে '\ 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.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);
মনে রাখবেন এটি সম্ভবত আপনার প্রয়োগের মধ্যে থাকা অন্য কোনও লগিং কার্যকারিতা ভঙ্গ করবে break
দাবি অস্বীকার: আমি এটিকে হ্যাক হিসাবে শ্রেণিবদ্ধ করব।
যদি আপনার একমাত্র উদ্দেশ্য অনেকগুলি লাইনে মুদ্রণ করা বন্ধ করে দেয় তবে এক উপায় হ'ল মানগুলি আপনার সম্পূর্ণ কনসোলটি পূরণ করতে না চাইলে তাদেরকে গ্রুপ করা to
পিএস: - আউটপুট জন্য আপনি ব্রাউজার কনসোল দেখুন
let arr = new Array(10).fill(0)
console.groupCollapsed('index')
arr.forEach((val,index) => {
console.log(index)
})
console.groupEnd()
@ শেনান ধারণা সম্পর্কে কিছু:
একটি অ্যারেতে আপনার আউটপুট সংগ্রহ করুন এবং তারপরে পছন্দের বিভাজকের সাথে যোগ ফাংশনটি ব্যবহার করুন
function echo(name, num){
var ar= [];
for(var i =0;i<num;i++){
ar.push(name);
}
console.log(ar.join(', '));
}
echo("apple",3)
মোডের বিশদগুলির জন্য এছাড়াও অ্যারে.প্রোটোটাইপ.জাইন () দেখুন
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
আপনি একক লাইনে আউটপুট প্রদর্শন করতে একটি স্প্রেড অপারেটর ব্যবহার করতে পারেন। জাভাস্ক্রিপ্ট ইএস 6 এর নতুন বৈশিষ্ট্য। নীচে উদাহরণ দেখুন
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
ডিবাগিং বা দীর্ঘ শৃঙ্খলিত মানচিত্রগুলি আসলে কী করছে তা শেখার জন্য দরকারী।
let myConsole = (function(){
let the_log_buffer=[[]], the_count=0, the_single_line=false;
const THE_CONSOLE=console, LINE_DIVIDER=' ~ ', ONE_LINE='ONE_LINE',
PARAMETER_SEPARATOR= ', ', NEW_LINE = Symbol();
const start = (line_type='NOT_ONE_LINE') => {
the_log_buffer=[[]];
the_count=0;
the_single_line = line_type == ONE_LINE;
console = myConsole;
}
const stop = () => {
isNewline();
console = THE_CONSOLE;
};
const isNewline = a_param => {
if (the_single_line && a_param==NEW_LINE) return;
const buffer_parts = the_log_buffer.map(one_set=> one_set.join(PARAMETER_SEPARATOR))
const buffer_line = buffer_parts.join(LINE_DIVIDER);
if (the_single_line) {
THE_CONSOLE.clear();
}
THE_CONSOLE.log( buffer_line );
the_log_buffer = [[]];
the_count=0;
}
const anObject = an_object => {
if (an_object instanceof Error){
const error_props = [...Object.getOwnPropertyNames(an_object)];
error_props.map( error_key => an_object['_' + error_key] = an_object[error_key] );
}
the_log_buffer[the_count].push(JSON.stringify(an_object));
}
const aScalar = a_scalar => {
if (typeof a_scalar === 'string' && !isNaN(a_scalar)) {
the_log_buffer[the_count].push("'" + a_scalar + "'");
} else {
the_log_buffer[the_count].push(a_scalar);
}
}
const notNewline = a_param => typeof a_param === 'object' ? anObject(a_param):aScalar(a_param);
const checkNewline = a_param => a_param == NEW_LINE ? isNewline(a_param) : notNewline(a_param);
const log = (...parameters_list) => {
the_log_buffer[the_count]=[];
parameters_list.map( checkNewline );
if (the_single_line){
isNewline(undefined);
}else{
const last_log = parameters_list.pop();
if (last_log !== NEW_LINE){
the_count++;
}
}
}
return Object.assign({}, console, {start, stop, log, ONE_LINE, NEW_LINE});
})();
function showConcatLog(){
myConsole.stop();
myConsole.start();
console.log('a');
console.log('bb');
console.dir({i:'not', j:'affected', k:'but not in step'})
console.log('ccc');
console.log([1,2,3,4,5,'6'], {x:8, y:'9'});
console.log("dddd", 1, '2', 3, myConsole.NEW_LINE);
console.log("z", myConsole.NEW_LINE, 8, '7');
console.log(new Error("error test"));
myConsole.stop();
}
myConsole.start(myConsole.ONE_LINE);
var stop_callback = 5;
function myCallback(){
console.log(stop_callback, 'Date.now()', myConsole.NEW_LINE, Date.now());
stop_callback--;
if (stop_callback>0){
window.setTimeout(myCallback, 1000);
}else{
showConcatLog();
}
}
window.setTimeout(myCallback, 1000);
// 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(' ')))